ホームページ  >  記事  >  バックエンド開発  >  Java の GetMessage() とは異なり、Go でエラーを効果的に比較して処理するにはどうすればよいですか?

Java の GetMessage() とは異なり、Go でエラーを効果的に比較して処理するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-25 21:09:11126ブラウズ

How Do I Effectively Compare and Handle Errors in Go, Unlike Java's GetMessage()?

Go でのエラー メッセージの比較

Java では、GetMessage() を使用して例外からエラー メッセージを取得できます。ただし、Go では、エラーの種類に対して定義された同等のメソッドはありません。代わりに、カスタム エラー処理手法を使用する必要があります。

カスタム エラー処理

1 つの方法は、必要な特定のエラー メッセージを表すパッケージ レベルの変数を定義することです。をチェックしてください。例:

var errExample = errors.New("this is an example")

エラーを返すとき、一般的なエラー文字列の代わりにこの変数を使用できます:

if err := some_package.DoSomething(); err != nil {
    if err == errExample {
        // handle it however.
    }
}

エラー変数のエクスポート

パッケージ外のコードがエラーにアクセスする必要がある場合は、大文字を使用して変数をエクスポートできます。文字:

var ErrExample = errors.New("this is an example")

これにより、エクスポートされた変数とエラーを比較できます:

if err == somepackage.ErrExample {
    // handle it
}

  • 絶対ファイルパス: os.ErrNotExist
  • HTTP エラー: net/http.ErrServerClosed
  • データベース エラー:database/sql.ErrNoRows

落とし穴: 文字列を避ける比較

エラーの Error() メソッドによって返された文字列と比較したいという誘惑に抵抗してください。これにより、コードが脆弱になる可能性があります。例:

if err.Error() == "this is an example" {
    // this is not recommended
}

代わりに、上で概説したカスタム エラー処理アプローチを使用します。

以上がJava の GetMessage() とは異なり、Go でエラーを効果的に比較して処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。