[問題] vc2008的異常處理

看板C_and_CPP (C/C++)作者 (我只是玩具)時間15年前 (2010/09/23 03:43), 編輯推噓2(2014)
留言16則, 5人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 目前小弟正學到異常處理 主要是想練習 自行定義未處理的異常 設定set_terminate(myHandler) 丟出"abcdefg"後 catch不匹配 改跑自行定義的myHandler() 此程式碼用Code::Blocks 編譯一切正常 但在visual 2008 中只要catch不匹配,就會跑出 於 0x7580b727 的 test2.exe 中發生未處理的例外狀況: Microsoft C++ 在記憶體位置 0x0043fe48,發生例外狀況: char 編譯也未完成..... 如果catch匹配到vc2008可正常編譯 後來測試發現 例外狀況: char 是throw丟出的型態 不過功力太弱....實在無法找出真相....囧 可以請大大用vc2008幫小弟跑一下嗎...m(_ _)m 以下是小弟的程式碼 #include <iostream> #include <exception> using namespace std; void myHandler() { cout<<"myHandler is working"<<endl; system("pause"); exit(1); } int main() { try { set_terminate(myHandler); throw "abcdefg"; } catch (double ex) { cout<<"i get catch"<<endl; } system("pause"); return 0; } 程式跑出來的錯誤結果: code::blocks 正常 vc2008 編譯中即失敗 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) win7_x64 vc2008 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.39.129

09/23 03:53, , 1F
你的程式碼我可以編譯 也跑出 myHandler is working
09/23 03:53, 1F

09/23 03:54, , 2F
(我也是用vc2008)
09/23 03:54, 2F

09/23 15:00, , 3F
感謝!!改天換個平台再試試m(_ _)m
09/23 15:00, 3F

09/23 15:24, , 4F
VS 2008的什麼版本?
09/23 15:24, 4F

09/23 17:58, , 5F
使用vc2008 pro sp1
09/23 17:58, 5F

09/23 22:07, , 6F
晚一點幫你測一下, 等我裝VS2008
09/23 22:07, 6F

09/23 22:10, , 7F
感謝T_T
09/23 22:10, 7F

09/23 23:25, , 8F
myHandler is working
09/23 23:25, 8F

09/23 23:25, , 9F
vs2008 pro SP1
09/23 23:25, 9F

09/23 23:26, , 10F
另外我也是Win7_x64
09/23 23:26, 10F

09/23 23:29, , 11F
vs2010 ulitimate 亦同
09/23 23:29, 11F

09/24 00:00, , 12F
感謝m(_ _)m 看樣子要重灌看看了
09/24 00:00, 12F

09/24 16:14, , 13F
如果我用"偵錯"就會出現一樣的問題,但是用啟動但不
09/24 16:14, 13F

09/24 16:14, , 14F
偵錯就會出現myHandler is working
09/24 16:14, 14F

09/24 20:35, , 15F
感謝!!剛剛試了 啟動不偵錯也可以跑myHandler is working了
09/24 20:35, 15F

09/24 20:35, , 16F
真不知道是什麼問題.....
09/24 20:35, 16F
文章代碼(AID): #1CcbneLA (C_and_CPP)
文章代碼(AID): #1CcbneLA (C_and_CPP)