Golang には、エラーを処理するための慣用的なアプローチが複数あります。
作成者は、命名規則 Err.... に従って固定エラー変数を宣言することがよくあります。例:
var ( ErrSomethingBad = errors.New("some string") ErrKindFoo = errors.New("foo happened") )
呼び出し元に役立つ特定の情報を含むエラー タイプ (...Error) を宣言することも一般的な方法です。
type SomeError struct { // extra information, whatever might be useful to callers // (or for making a nice message in `Error()`) ExtraInfo int } type OtherError string func (e SomeError) Error() string { /* … */ } func (e OtherError) Error() string { return fmt.Sprintf("failure doing something with %q", string(e)) }
アドホック エラー
ユーザーが特定のエラーをテストする必要がない場合エラーがある場合は、errors.New.
func SomepackageFunction() error { return errors.New("not implemented") }
標準パッケージ エラーの使用
io.EOF などの標準パッケージで定義されたエラーを利用できます。 。ただし、一般的には、独自のパッケージ用にカスタム エラーを作成することをお勧めします。
func SomeFunc() error { return io.EOF }
エラー インターフェイス
エラー インターフェイスを作成すると、特定の動作やタイプを確認できます。
type Error interface { error Timeout() bool // Is the error a timeout? Temporary() bool // Is the error temporary? }
コンテキストエラー
既存のエラーに追加のコンテキストを提供するには、Go 1.13 以降でこの手法を使用します。
func SomepackageFunction() error { err := somethingThatCanFail() if err != nil { return fmt.Errorf("some context: %w", err) } }
アプローチの選択は、ユーザーが次のエラーをテストする必要があると予想されるかどうかによって異なります。特定のエラーと、複数のユーザーが独自のエラー処理を実装する可能性があります。
以上がGo でエラーを最適に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。