C++ 異常處理機制
void f()
{
...
...throw 1;
...
...throw 1.0;
...
...throw "abcd";
...
}
int main()
{
...
try
{
f();
}
catch(int){}
catch(double){}
catch(char*){}
}
————————————————
C++異常處理機制的作用(個人理解)
之前一直沒有對異常處理機制有個好的認知,總感覺這個東西有些雞肋。
但最近在寫C++/MFC/Halcon開發的程序的時候突然感覺領會了一些異常處理機制的作用,現記錄下來。
Halcon算法有時會碰到這種問題,臺式機沒有連接攝像設備,但是Halcon寫的算法需要進行圖像處理,沒有圖像怎麼辦呢?報錯就完了,可是Halcon報錯不是一般的報錯,只要Halcon函數使用出現錯誤,直接就掛掉程序,就像下面這樣
這誰頂得住呀,這要是給別人來用,點一下崩一次,點一下崩一次,豈不是玩完了?
然後我想了一個辦法,這還不簡單嗎,執行語句之前我先判斷條件是否滿足,用if-else就完事了,可是寫著寫著我又發現一個問題。。。有些錯誤的多樣性遠遠不是想的那麼簡單,最主要的是有些錯誤沒法兒提前預知啊,比如根據路徑讀取一張圖片,用if-else得判斷路徑對不對、有沒有圖等等,寫一兩個還好,如果每個處理的地方都要寫這些,那。。。
這時候,主角登場了,異常處理機制try-catch,解決了上述的兩個問題:1)程序出錯直接崩潰 ;2)錯誤類型判斷。
代碼大體如上圖所示,這時候試著(try)執行第一句caltab_points,如果錯誤就回拋出(throw)一個錯誤被下面的catch給接住,這時候就可以在catch的代碼塊中做出相應的處理,這裡我就直接結束了這整個函數的執行,return 0;返回一個執行失敗的信息給上級調用函數並且用一個對話欄來顯示錯誤信息和錯誤碼,如果需要解決這個問題,除了根據錯誤提示來找問題,還可以根據錯誤碼來尋找對應的解決方案,錯誤提示如下圖,這樣既保證了程序執行遇到錯誤時不掛掉,也友好地提示出了錯誤的信息。
這些只是對龐大的異常處理機制一個粗略的個人理解,如有錯誤歡迎指出!
————————————————
通過分享實用的計算機編程語言乾貨,推動中國編程到2025年基本實現普及化,使編程變得全民皆知,最終實現中國編程之崛起,這裡是中國編程2025,感謝大家的支持。
原文鏈接:https://blog.csdn.net/haitaolang/article/details/70881206
原文鏈接:https://blog.csdn.net/o707191418/article/details/100139220
閱讀更多 中國編程2025 的文章