1.4 Goのエラーを扱う

1.4.1 Goのエラーは値

Goのエラーは error 型のインタフェースを満たした単なる値です。 error 型は int 型などと同様にGoのランタイムに組み込まれている型で、インタフェースとして定義されています。このインタフェースに格納される nil 値はエラーがないことを表します。Javaでは trycatch が例外処理の構文として存在しますが、Goには例外を扱う組み込みの構文はありません。エラーが単なる値であることはGoの特徴の1つと言えます。

type error interface {
        Error() string
}
note

Goでも過去に組み込みの構文として try の導入の是非について議論がありましたが、導入は見送られています。

https://github.com/golang/go/issues/32437

Error() string を満たしている型は error インタフェースを満たしており、エラーとして扱えます。 error インタフェースの、もっとも一般的に使用される実装は errors.New() を使って生成するエラーです。その実体は以下のような errorString という構造体です。 errorStringError() string を実装しているため error インタフェースを満たしています。

func New(text string) error {
        return &errorString ...