English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基礎チュートリアル

Golang 控制文

Golang 関数 & メソッド

Golang 構造体

Golang スライス & 配列

Golang 文字列(String)

Golang ポインタ

Golang インターフェース

Golang 并行処理

Golang エラーオブジェクト(Error)

Golang その他の雑多なもの

Go 言語のError(エラーハンドリング)

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