5.2 エラーハンドリングの基本テクニック

エラーハンドリングは、関数やメソッドを呼び出し、エラーが発生した場合に呼び出し元のプログラムがエラーをどのように処理するかを判断することです。多くの場合、以下のような方針が考えられます。

  1. 呼び出し元に関数の引数などの情報を付与してエラーを返す

  2. ログを出力して処理を継続する

  3. リトライを実施する

  4. リソースをクローズする

適切にエラーハンドリングを実施することで、堅牢で運用しやすいアプリケーションを実装することにつながります。例外的なフローを正しくハンドリングできておらず、後に続いたフローで意図しないエラーが発生して、原因究明に難儀した経験を持つ読者もいるでしょう。特にエラーハンドリングではエラーの考慮もれがあると大変です。本来エラーを捕捉すべきところを、うっかり考慮がもれていて、プログラムが終了してしまう、あるいは nilにアクセスしてしまってパニックが発生しアプリケーションが異常終了してしまう、そのようなプログラムでは安定して運用できません。抜けもれなくきっちりエラーをハンドリングすることを心がけましょう。

すでに説明したようにGoは、エラーが返却され得る関数やメソッドを呼び出した場合、戻り値としてエラーを返却する文化です。

note

エラーを返却する代わりに panic を発生させていたら、それはあまり良くないプログラムです。panic を捕捉する組み込み関数に recover がありますが、場当たり的に recover を使わずに、正しくエラーハンドリングしましょう。 ...