つれづれインフラぶろぐ

インフラエンジニアとして学んだことを書きます

Golangのエラーハンドリングについて

ろのです。
初日から意思表明だけでは締まりがないので、
技術っぽいことを書こうと思います。


お題は「Golangのエラーハンドリングについて」です。
Golangのエラーハンドリングでは、
他の言語でよく使われているTryとCatch的なものを使いません。

また、Golangにはビルトインのerrorという
interface型のtypeが提供されています。

type error interface {
    Error() string
}

Golangの関数では戻り値を複数返せるため、
戻り値に返したい値のほかにエラーハンドリング用の値も返して、
呼び出し元のif文でエラーを判断します。
文章で書いても分かりにくいので例をご覧ください。

file, err := os.Open(filename) // オープン失敗時、errに戻り値が入る
if err != nil { 
    fmt.Fprintln(os.Stderr, err)
    return false
}

という感じです。

任意のerror interfaceを作成してエラーを返す方法はいくつかあります。

1. errors.newを利用する

2. fmt.Errorfを利用する

3. stringを返すError関数を実装したstructを自分で書く

これらについては気が向いたら書きます。
今日はこれくらいにしようかな~

参考にしたURL:
エラー・ハンドリングについて(追記あり) — プログラミング言語 Go | text.Baldanders.info