ホームページ > バックエンド開発 > Golang > Golang でカスタム エラー タイプを使用するにはどうすればよいですか?

Golang でカスタム エラー タイプを使用するにはどうすればよいですか?

WBOY
リリース: 2024-06-06 10:53:57
オリジナル
1043 人が閲覧しました

Golang でカスタム エラー タイプを使用すると、アプリケーションに固有の、より説明的で実用的なエラー メッセージを作成できます。手順は次のとおりです。カスタム エラー タイプを宣言し、エラー インターフェイスを実装します。関数でカスタム エラーを返します。 errors.Is() 関数またはerrors.As() 関数を使用してエラーを確認します。エラーの種類をカスタマイズすることで、エラー処理とデバッグを簡素化できます。たとえば、ファイル読み取り関数では、カスタム エラーによってファイル固有のエラー情報が提供されます。

如何在 Golang 中使用自定义错误类型?

Golang でのカスタム エラー タイプの使用

Golang では、エラー タイプは操作の失敗や異常な状態を表すために使用されます。カスタム エラー タイプを使用すると、アプリケーションに固有の、より説明的で実用的なエラー メッセージを作成できます。

カスタム エラー タイプを作成します:

error キーワードを使用してカスタム エラー タイプを宣言します: error 关键字声明自定义错误类型:

type myError struct {
    message string
}
ログイン後にコピー

实现 error 接口:

myError 类型必须实现 error 接口,即 Error() 方法:

func (e *myError) Error() string {
    return e.message
}
ログイン後にコピー

使用自定义错误类型:

在函数或方法中返回自定义错误:

func myFunc() error {
    return &myError{message: "some error occurred"}
}
ログイン後にコピー

处理自定义错误:

使用 errors.Is()errors.As()

err := myFunc()
if errors.Is(err, &myError{}) {
    // 自定义错误处理逻辑
}
ログイン後にコピー

error インターフェイスを実装します:

< myError タイプは、error インターフェイス、つまり Error() メソッドを実装する必要があります:

func readFile(path string) error {
    _, err := ioutil.ReadFile(path)
    if err != nil {
        return &myError{message: fmt.Sprintf("could not read file '%s': %v", path, err)}
    }
    return nil
}
ログイン後にコピー

カスタム エラー タイプを使用します:

関数またはメソッドで返す カスタム エラー:

err := readFile("file.txt")
if errors.Is(err, &myError{}) {
    fmt.Println(err.Error())
}
ログイン後にコピー

カスタム エラーの処理:

🎜🎜 errors.Is() または errors.As() 関数を使用してチェックしますエラーの場合: 🎜
could not read file 'file.txt': open file.txt: no such file or directory
ログイン後にコピー
🎜🎜 実際のケース: 🎜🎜🎜 ファイル読み取り関数を検討します: 🎜rrreee🎜🎜 使用法: 🎜🎜rrreee🎜 出力: 🎜rrreee🎜 エラータイプをカスタマイズすることで、より説明的で実用的なエラーメッセージを作成できます。エラー処理とデバッグを簡素化します。 🎜

以上がGolang でカスタム エラー タイプを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート