首頁>Club>
7
回覆列表
  • 1 # 使用者6780695377130

    首先,呼叫處針對異常有對策時才 catch,否則放行(繼續向上拋)。

    其次,只有在針對某種異常有特殊對策時,才針對這種異常做特殊處理,否則統一處理。

    當然,「對策」是看需求的,沒有銀彈,不要指望一招鮮吃遍天。

    編寫程式碼的時候,如何正確區分哪些異常需要捕獲和處理,哪些可以忽略?

    這個問題裡包含兩層意思,其一「應該在什麼時候 catch?」,其二「應該 catch 哪些異常?」。

    什麼時候 catch?有對策時。比如:

    必須更換錯誤報告手段:位於 C 函式介面、系統回撥、 等函式中;有針對異常的處理方法:開啟檔案時失敗拋異常,需求要求彈窗提示檔案無法開啟。

    應該 catch 哪些異常?所有異常,並且儘可能多地統一處理。比如:

    只有在針對某些異常有特殊對策時,才特殊處理,比如:

    比如c++ vector分配記憶體的時候, 需要處理bad_alloc異常嗎,捕獲了怎麼處理合適?

    如開頭所說,看需求,如果你有針對記憶體分配失敗的對策,那麼就特殊處理,否則就不要特殊化這種異常,和其它異常一併處理即可。比如:

    舉個對策的例子:如果需求針對特大圖片允許子取樣(載入超大尺寸圖片時可能記憶體不足,但很多時候我們將它顯示在介面上並不需要那麼高的解析度),那麼就可以特殊處理。

  • 中秋節和大豐收的關聯?
  • 天生我材必有用是出自李白哪首詩?