[問題] try catch(...)的問題

看板C_and_CPP作者 (我愛阿蓉)時間14年前 (2011/10/28 14:20), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/5 (看更多)
請教各位關於exception handle的問題 之前大量使用C# 知道他的try catch(Exception e)可以吃所有type的exception 所以反觀C++ 似乎是使用try catch(...) 但是... 我隨便寫一段測看看 try { 1. throw; //跑到這行就掛了? 2. throw exception(); //會進到catch 3. int a, b = 0; a= 1/b; //catch不到.... 4. int *ptr = 0; *ptr = 5566; //catch 不到 } catch(...) { } 我比較想了解 為啥 1,3,4都catch不到 1 和 2 有什麼差異嗎? 像是寫C++ 其實我根本也不清楚到底有多少種Exception Type C# 的 IDE 很順 打幾個字就跳出來相關Type C++ 就不知怎處理 千奇百怪exception 所以想先找一個general的方式做catch 但連 divide by zero, null reference exception都catch不到好像也滿怪的 還是我用錯了? 為啥2. 就catch的到 難道compiler(這邊用詞不知道有沒有錯, 還是OS) 發的exception 不是用throw 所以我 攔截不到? 這方面沒什麼概念 請教各位有經驗的版友 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.64.222

10/28 14:23, , 1F
我覺得我從來沒有弄懂C++的exception要怎麼正確的使用 XD
10/28 14:23, 1F

10/28 15:41, , 2F
3跟4如果用windows可以用_set_se_translator以及相關
10/28 15:41, 2F

10/28 15:41, , 3F
的東西來做出有throw exception的效果. 用*nix的話還是
10/28 15:41, 3F

10/28 15:42, , 4F
要攔截signal. XD
10/28 15:42, 4F
文章代碼(AID): #1Egad1vd (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Egad1vd (C_and_CPP)