English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
GoにはJavaのtry / catchのような例外メカニズムを使用しますが、Goでは例外を投げることができません。
Goは別のメカニズム、デフォアートとリカバリーメカニズム。
Goは関数とメソッドのシンプルなエラーをエラーオブジェクトを返すことで処理します。エラーオブジェクトは一つまたは最後の返り値になる可能性があります。関数にエラーがない場合、エラーオブジェクトはnilです。
エラーを受け取ったかどうかにかかわらず、常に呼び出し文でエラーを確認する必要があります。
私たちはエラーを無視してはならない、それがプログラムのクラッシュを引き起こす可能性があります。
Goがエラーセンシティを検出し、報告する方法は
エラーを引き起こす関数は、値とエラーコードの2つの変数を返します:成功した場合、nil;エラー条件の場合、== nil。
関数呼び出しの後でエラーを確認します。エラーが発生した場合(if error != nil)、実際の機能(または必要に応じて全体のプログラム)の実行を停止します。
Goには予め定義されたエラーオブジェクトのインターフェースがあります
type error interface { Error() string }
私たちはエラーポケットのerror.Newを使ってエラータイプを定義し、適切なエラーメッセージを提供することができます、例えば:
err := errors.New("math - 負数的平方根")
package main import "errors" import "fmt" import "math" func Sqrt(value float64) (float64, error) { if (value < 0) { return 0, errors.New("Math: 負数的平方根") } return math.Sqrt(value), nil } func main() { result, err := Sqrt(-64) if err != nil { fmt.Println(err) } else { fmt.Println(result) } result, err = Sqrt(64) if err != nil { fmt.Println(err) } else { fmt.Println(result) } }
出力:
Math: 負の数の平方根 8