C++異常處理機制的作用(個人理解)

之前一直沒有對異常處理機制有個好的認知,總感覺這個東西有些雞肋。
但最近在寫C++/MFC/Halcon開發的程序的時候突然感覺領會了一些異常處理機制的作用,現記錄下來。
Halcon算法有時會碰到這種問題,臺式機沒有連接攝像設備,但是Halcon寫的算法需要進行圖像處理,沒有圖像怎麼辦呢?報錯就完了,可是Halcon報錯不是一般的報錯,只要Halcon函數使用出現錯誤,直接就掛掉程序,就像下面這樣
在這裏插入圖片描述
這誰頂得住呀,這要是給別人來用,點一下崩一次,點一下崩一次,豈不是玩完了?
然後我想了一個辦法,這還不簡單嗎,執行語句之前我先判斷條件是否滿足,用if-else就完事了,可是寫着寫着我又發現一個問題。。。有些錯誤的多樣性遠遠不是想的那麼簡單,最主要的是有些錯誤沒法兒提前預知啊,比如根據路徑讀取一張圖片,用if-else得判斷路徑對不對、有沒有圖等等,寫一兩個還好,如果每個處理的地方都要寫這些,那。。。
這時候,主角登場了,異常處理機制try-catch,解決了上述的兩個問題:1)程序出錯直接崩潰 ;2)錯誤類型判斷。
在這裏插入圖片描述
代碼大體如上圖所示,這時候試着(try)執行第一句caltab_points,如果錯誤就回拋出(throw)一個錯誤被下面的catch給接住,這時候就可以在catch的代碼塊中做出相應的處理,這裏我就直接結束了這整個函數的執行,return 0;返回一個執行失敗的信息給上級調用函數並且用一個對話欄來顯示錯誤信息和錯誤碼,如果需要解決這個問題,除了根據錯誤提示來找問題,還可以根據錯誤碼來尋找對應的解決方案,錯誤提示如下圖,這樣既保證了程序執行遇到錯誤時不掛掉,也友好地提示出了錯誤的信息。
在這裏插入圖片描述
這些只是對龐大的異常處理機制一個粗略的個人理解,如有錯誤歡迎指出!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章