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

2021-09-26 15:17:43 字數 1013 閱讀 6522

之前一直沒有對異常處理機制有個好的認知,總感覺這個東西有些雞肋。

但最近在寫c++/mfc/halcon開發的程式的時候突然感覺領會了一些異常處理機制的作用,現記錄下來。

halcon演算法有時會碰到這種問題,台式電腦沒有連線攝像裝置,但是halcon寫的演算法需要進行影象處理,沒有影象怎麼辦呢?報錯就完了,可是halcon報錯不是一般的報錯,只要halcon函式使用出現錯誤,直接就掛掉程式,就像下面這樣

這誰頂得住呀,這要是給別人來用,點一下崩一次,點一下崩一次,豈不是玩完了?

然後我想了乙個辦法,這還不簡單嗎,執行語句之前我先判斷條件是否滿足,用if-else就完事了,可是寫著寫著我又發現乙個問題。。。有些錯誤的多樣性遠遠不是想的那麼簡單,最主要的是有些錯誤沒法兒提前預知啊,比如根據路徑讀取一張,用if-else得判斷路徑對不對、有沒有圖等等,寫一兩個還好,如果每個處理的地方都要寫這些,那。。。

這時候,主角登場了,異常處理機制try-catch,解決了上述的兩個問題:1)程式出錯直接崩潰 ;2)錯誤型別判斷。

**大體如上圖所示,這時候試著(try)執行第一句caltab_points,如果錯誤就回丟擲(throw)乙個錯誤被下面的catch給接住,這時候就可以在catch的**塊中做出相應的處理,這裡我就直接結束了這整個函式的執行,return 0;返回乙個執行失敗的資訊給上級呼叫函式並且用乙個對話欄來顯示錯誤資訊和錯誤碼,如果需要解決這個問題,除了根據錯誤提示來找問題,還可以根據錯誤碼來尋找對應的解決方案,錯誤提示如下圖,這樣既保證了程式執行遇到錯誤時不掛掉,也友好地提示出了錯誤的資訊。

這些只是對龐大的異常處理機制乙個粗略的個人理解,如有錯誤歡迎指出!

如何理解異常處理機制

程式在執行過程中可能產生異常 異常與bug對比 異常是程式執行時可預料的執行分支。例 執行時產生除0的情況 需要開啟的外部檔案不存在 陣列訪問時越界。bug是程式中的錯誤,是不被預期的執行方式 例 使用野指標 堆陣列使用結束後未釋放 選擇排序無法處理長度為0的陣列c語言經典處理方式 if else ...

c 異常處理機制

c 異常處理機制 c 異常處理機制是乙個用來有效地處理執行錯誤的非常強大且靈活的工具,它提供了更多的彈性 安全性和穩固性,克服了傳統方法所帶來的問題.異常的丟擲和處理主要使用了以下三個關鍵字 try throw catch 丟擲異常即檢測是否產生異常,在c 中,其採用throw語句來實現,如果檢測到...

c 異常處理機制

c 異常處理機制是乙個用來有效地處理執行錯誤的非常強大且靈活的工具,它提供了更多的彈性 安全性和穩固性,克服了傳統方法所帶來的問題.異常的丟擲和處理主要使用了以下三個關鍵字 try throw catch 丟擲異常即檢測是否產生異常,在c 中,其採用throw語句來實現,如果檢測到產生異常,則丟擲異...