特定のエラーを正確に処理する方法
Go の標準ライブラリ関数を使用する場合、特定の種類のエラーのみを考慮する必要がある状況に遭遇することがあります。エラー。たとえば、rpc.Dial を使用する場合は、接続の喪失または拒否に関連するエラーの処理のみに興味があるかもしれません。最新の Go で特定のエラーを捕捉する推奨される方法は、errors.Is 関数とerrors.As 関数を使用することです:
これらの関数は、指定されたターゲット エラーまたはエラー タイプとエラーの詳細な比較を実行します。
特定のエラー タイプが利用可能な場合
if errors.Is(err, syscall.ECONNREFUSED) { // Connection refused error } else { // Some other kind of error }
一部のライブラリでは特定のエラー タイプを使用するため、エラー処理が簡単になります。たとえば、net パッケージは、ネットワーク エラーの net.Error を含むいくつかのエラー タイプを定義します。
考えられるすべてのエラーの取得
によって返されるすべての考えられるエラーの決定標準ライブラリ関数は単純ではありません。最善の方法は、ソース コードを確認するか、関数の godoc ドキュメントを参照することです。if _, ok := err.(net.Error); ok { if err.Error() == "connection lost" { ... } }
注意事項
文字列比較は、実際には行われないため、慎重に使用する必要があります。脆弱であり、誤ったエラー処理につながる可能性があります。関数によって返される特定のエラーは、将来の Go バージョンで変更される可能性があります。
以上がGo の標準ライブラリで特定のエラーを適切に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。