作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題[問題] Exception, Assertion或其他error handle
時間Thu Aug 9 11:59:03 2012
大家好
始終有一個極大的疑點沒辦法了解
就是關於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:不是throw exception 而是直接把program crash掉 所以當然 08/09 14:15
→ lausai:甚麼都攔不到 想深入研究可以直接看VC++ CRT source吧.. 08/09 14:17