如何準確處理特定錯誤
在使用Go 的標準函式庫函數時,你可能會遇到只關心特定類型錯誤的情況錯誤。例如,如果使用 rpc.Dial,您可能只對處理與連線遺失或拒絕相關的錯誤感興趣。
使用errors.Is 和errors.As
在現代Go中捕捉特定錯誤的首選方法是使用errors.Is和errors.As函數:
if errors.Is(err, syscall.ECONNREFUSED) { // Connection refused error } else { // Some other kind of error }
這些函數對錯誤與給定的目標錯誤或錯誤類型進行深度比較。
當特定錯誤類型可用時
某些庫使用特定錯誤類型,使錯誤處理更簡單。例如,net包定義了幾種錯誤類型,包括用於網路錯誤的net.Error:
if _, ok := err.(net.Error); ok { if err.Error() == "connection lost" { ... } }
取得所有可能的錯誤
確定由傳回的所有可能的錯誤標準庫函數並不簡單。最好的方法是查看該函數的原始程式碼或查閱該函數的 godoc 文件。
注意事項
以上是如何優雅地處理Go標準庫中的特定錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!