[問題] Exception, Assertion或其他error handle

看板C_and_CPP作者 (我愛阿蓉)時間12年前 (2012/08/09 11:59), 編輯推噓2(203)
留言5則, 1人參與, 最新討論串1/1
大家好 始終有一個極大的疑點沒辦法了解 就是關於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

08/09 14:11, , 1F
既然是標準C函式的變種 直覺上應該就會想到是用error code
08/09 14:11, 1F

08/09 14:11, , 2F
或是errno 而非是以exception傳遞錯誤發生吧..
08/09 14:11, 2F

08/09 14:14, , 3F
http://ppt.cc/3l6H 這邊有說道default IP handler的行為
08/09 14:14, 3F

08/09 14:15, , 4F
不是throw exception 而是直接把program crash掉 所以當然
08/09 14:15, 4F

08/09 14:17, , 5F
甚麼都攔不到 想深入研究可以直接看VC++ CRT source吧..
08/09 14:17, 5F
文章代碼(AID): #1G8pMAV6 (C_and_CPP)