このチュートリアルでは、独自のカスタム エラーを作成し、それを作成した関数やパッケージで使用する方法を学びます。標準ライブラリと同じ手法を使用して、カスタム エラーに関するより詳細な情報を提供します。
New 関数を使用してカスタム エラーを作成する
カスタム エラーを作成する最も簡単な方法は、エラー パッケージの New 関数を使用することです。
New 関数を使用してカスタム エラーを作成する前に、まず New がどのように実装されるかを見てみましょう。以下に示すように、errors パッケージ内の New 関数の実装です。
// Package errors implements functions to manipulate errors. package errors // New returns an error that formats as the given text. func New(text string) error { return &errorString{text} } // errorString is a trivial implementation of error. type errorString struct { s string } func (e *errorString) Error() string { return e.s }
New 関数の実装は非常に簡単です。 errorString は、文字列フィールドを 1 つだけ持つ構造体タイプです。 14 行目では、errorString ポインター レシーバー (Pointer Receiver) を使用して、エラー インターフェイスの Error() 文字列メソッドを実装しています。
5 行目の New 関数には文字列パラメーターがあり、これを通じて errorString 型の変数が作成され、そのアドレスが返されます。したがって、新しいエラーが作成されて返されます。
New 関数の仕組みがわかったので、プログラム内で New を使用してカスタム エラーを作成してみましょう。
円の半径を計算し、半径が負の場合にエラーを返す簡単なプログラムを作成します。
package main import ( "errors" "fmt" "math" ) func circleArea(radius float64) (float64, error) { if radius < 0 { return 0, errors.New("Area calculation failed, radius is less than zero") } return math.Pi * radius * radius, nil } func main() { radius := -20.0 area, err := circleArea(radius) if err != nil { fmt.Println(err) return } fmt.Printf("Area of circle %0.2f", area) }
glayground で実行
上記のプログラムでは、半径がゼロより小さいかどうかを確認します (10 行目)。半径がゼロより小さい場合は、適切なエラー メッセージとともに、0 に等しい面積が返されます。半径がゼロより大きい場合、面積が計算され、nil エラーが返されます (13 行目)。
main 関数では、19 行目でエラーが nil に等しいかどうかを確認します。 nil でない場合はエラーを出力して返します。それ以外の場合は円の領域を出力します。
私たちのプログラムでは、半径がゼロ未満であるため、次のように出力されます:
# # 推奨:面積計算に失敗しました、半径はゼロ未満です
以上がgolangでエラーを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。