→ os653:直接 catch 的問題是沒啥意義,new 失敗了很多事情都沒辦法 06/09 11:53
→ os653:處理了吧?就像 IE 的例子,在極端情況下,你也沒辦法跳出個 06/09 11:54
→ os653:錯誤視窗跟使用者說你要不到記憶體,因為視窗根本出不來 06/09 11:55
推 COLDTURNIP:1. 重新 new,一直到成功為止 06/09 12:30
※ 編輯: os653 來自: 218.170.53.62 (06/09 12:32)
→ COLDTURNIP:2. 事前就挖出來(pool) 06/09 12:31
→ os653:重新 new 到成功好像會導致程式沒有回應耶? 06/09 12:34
→ os653:事前挖出來是指在程式一開始就先把所有記憶體要好嗎?不懂.. 06/09 12:35
→ os653:大概懂了,windows API 本來就不會 throw exception 嘛 ... 06/09 12:56
推 freelancer:請參看Effective C++ item 7,C++予許用 06/09 13:09
→ freelancer:typedef void (*new_hnalder)(); 06/09 13:09
→ freelancer:new_handler set_new_handler(new_handler p) throw(); 06/09 13:10
→ freelancer:註冊自已的function 來處理new 失敗的情況 06/09 13:10
推 littleshan:你可以 catch exception 然後釋放資源 06/09 13:13
→ littleshan:因為釋放資源的操作通常會設計成 nothrow 06/09 13:13
→ littleshan:所以可以讓你的程式繼續執行下去 06/09 13:13
→ littleshan:如果要跳出錯誤訊息,可以在程式啟動時就先建立視窗 06/09 13:15
→ littleshan:真正發生 exception 時再顯示出來,以避免額外的配置 06/09 13:16
推 wowtiger:SEH or VEH 06/16 01:40