在 Go 中捕獲特定錯誤
Go 提供靈活的錯誤處理,允許開發人員解決程式碼中的特定錯誤類型。假設您正在使用 rpc.Dial 函數,並且只想處理「連線遺失」或「連線被拒絕」錯誤。
使用Errors.Is 和Errors.As
現代Go版本提供了errors.Is和errors.As函數來實現高效的錯誤處理。在您的情況下:
if errors.Is(err, syscall.ECONNREFUSED) { // Handle connection refused error } else if errors.As(err, &net.OpError{}) { // Handle other network errors (e.g., connection lost) }
檢查錯誤類型
另一種方法是直接檢查錯誤類型。正如您的問題中提到的, net 套件定義了各種錯誤類型,包括網路錯誤的net.Error:
if _, ok := err.(net.Error); ok { // Handle net.Error instance }
閱讀錯誤文件
了解所有可能的情況函數傳回的錯誤,可以查閱文件。例如,rpc.Dial 的 godoc 提供了有關它可以返回的不同錯誤的詳細資訊。
Legacy Approach
作為最後的手段,您可以比較錯誤字串預期錯誤:
if strings.Contains(err.Error(), "connection lost") { // Handle connection lost error }
但是,不建議使用這種方法,因為它容易出現誤報或底片。
以上是如何在 Go 中具體捕捉「連線遺失」或「連線拒絕」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!