回覆列表
  • 1 # 使用者5790126647273

    1. 別人的錯,用斷言。比如

    定好文件,RTFM。函式被呼叫時 precondition 沒有被滿足,不要為上層的失誤擦屁股。2. 只在最外層拋棄詳細錯誤資訊,無論是錯誤碼還是異常。檢測到錯誤以後,要麼把錯誤吞掉當作什麼都沒發生,要麼把錯誤報告出去,要麼繼續往上傳。但選擇繼續往上傳時,不要讓錯誤訊息縮水,比如把錯誤碼變成 bool。3. 如果程式碼用於嵌入式、實時系統,或者是並未使用過異常的已有工程,用異常前請三思。4. 函式正常執行時有且只有一個需要返回的資料,出錯時建議用異常。不要為了引入錯誤碼把呼叫搞複雜。把小於 0 定為錯誤碼相當於用蹩腳的方式實現了 optional,並且沒法從簽名中看出來,必須藉助文件。5. 與抽象資源相關的錯誤,用異常。用 RAII 封裝這些「資源」,但不要用二段式構造。理解 RAII。要做到異常安全,RAII 是必不可少的。要實現真正的 RAII,異常是不可或缺的。6. 只在必要時 catch 異常,比如:解構函式不能丟擲異常:不解釋API 邊界:比如動態連結庫需要 C 風格介面(此時還需要做異常到錯誤碼的轉換)文件中明確定義不能丟擲異常的函式:比如某些作業系統的回撥函式決定報告錯誤:其實廣義而言,也是 API 邊界的一種決定吞掉錯誤:出這個錯無所謂 有從錯誤中恢復的方法:比如用 UTF-8 解碼文字失敗,轉而嘗試用 GBK 解碼

  • 中秋節和大豐收的關聯?
  • sql中的if判斷語句應該怎麼寫?