看板 C_and_CPP 關於我們 聯絡資訊
大家好 始終有一個極大的疑點沒辦法了解 就是關於c++的exception或其他不太理解的error handling... 提出來請各位解解惑...因為常常會遇到程式crash 可是卻不知該怎handle 目前我有必要使用vswprintf_s 這個api 來做一些字串處理 http://msdn.microsoft.com/zh-tw/library/xa1a1a6z(v=vs.80).aspx 但是我發現 只要丟入的format string 不合法 例如我丟"%" 他就會raise 不知道什麼東西.... Debug mode 我看他是assertion 所以我就用Release build... 他跑到 vswprintf_s那行之後 就當掉了 我從messagebox 看不出她到底是throw exception還是怎樣... 所以我嚐試使用 try{} catch(...){} 和 __try{} __except(1){} 去試圖把exception攔截... 但結果是 根本攔不到... 他到底是raise 什麼東西 讓我無法handle? 還是說除了exception外 還有一些error handling的技巧是我不曉得的? 因為這個API 我在Desktop平台外使用 他的error message寫 "Unhandle Exception......." 既然是exception 為啥我catch不到 實在沒道理 現在變成 使用任何API 我都要去詳查他所可能引發的error 像是MSDN寫的 利用_set_invalid_parameter_handler 把這個error case導向自訂的function去handle.... 在這之前我根本也不知道有這種寫法@@ 請教各位是不是除了exception外 有其他未知的 是我絕對無法handle 程式必定會當掉的嗎? 附上測試小程式 http://codepad.org/gVBND9u5 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.64.222
lausai:既然是標準C函式的變種 直覺上應該就會想到是用error code 08/09 14:11
lausai:或是errno 而非是以exception傳遞錯誤發生吧.. 08/09 14:11
lausai:http://ppt.cc/3l6H 這邊有說道default IP handler的行為 08/09 14:14
lausai:不是throw exception 而是直接把program crash掉 所以當然 08/09 14:15
lausai:甚麼都攔不到 想深入研究可以直接看VC++ CRT source吧.. 08/09 14:17