つれづれインフラぶろぐ

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

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

日記始めました

ろのです。
どうせいつものように続かない気はするんですが、
週1回日曜日にブログ書くことにしました。


理由としてはいくつかあって、
・アウトプット癖をつける

・やったことを残してモチベーション上げたい(自己承認的何か)

・どうせ忘れるからドキュメントに残そう

などいくつかあります。


Qiitaも併用して使っていく予定ですが、
使い分け方針としては基本はてブロにアウトプットして、
まとめて一つのトピックになりそうだったらQiitaにあげようかなぁ
みたいな気持ちでいます。

毎週技術のアウトプット出すのしんどいので、
ポエム的な週が多くなりそう。

続くといいなぁ。