錯誤處理

Go 語言錯誤處理:Error、Panic、Recover。

Errors

  • 在 error 位置回傳 nil 表示沒有錯誤
  • 可透過實作 Error() 方法建立自訂錯誤類型
  • Go 1.13 後,盡量使用 errors.As 方法檢視錯誤值是否為某自訂錯誤類型的實例

Ref: Custom Errors

建立自訂錯誤的方式
  • 使用 New 函式建立自訂錯誤
  • 使用 Errorf 為錯誤加入更多資訊
  • 使用 struct type 的 methods 提供更多錯誤資訊
  • 使用 struct type 和 fields 提供更多錯誤資訊

Panic

類似 Exception,在執行期發生。

使用 channels 時可能引發 panic 的情況:

  • 向已關閉的 channel 發送資料
  • 關閉一個已經關閉的 channel

Recover

從 panic 中恢復,通常搭配 defer 使用。