例外を拾おう

例外を拾おう

  • 正確には正しく拾い、投げ捨てることをしない様に努めましょう
  • こういうコードを見るととてもモヤモヤします。そして不安になります
try {
    // 例外が発生するかも知れない処理
} catch (Exception e) {
}

何がよくないか?

  • まず、例外が発生したにも関わらず対応策をとらないのかとても気になります
  • たとえば、齟齬の発生しているDBから取得した値が原因になっているとして
  • そのデータやそれを生み出すコードを特定する機会を逃すことに他なりません
  • 例外を発生させることはシステムが不調をきたしていることを知らせてくれるものです
  • 故障したスポーツ選手が痛み止めを使って試合に出続ける様なものです
  • 問題が大きくなる前に正しく状態を知り、改善することが最終的に良い結果をもたらすでしょう

そもそも、例外とは何なのか?

  • 例外とは処理を継続することが不可能になった状態です
  • 例外が発生したら速やかに処理を中断すべきです
  • そして、ユーザにエラーの発生を伝える、または管理者に通知を送信することを心がけるべきです
  • まずはエラー内容をログに出力しましょう
  • スタックトレースを読めばある程度の状態を知ることができます
  • 発生箇所やどういった属性のユーザが何にアクセスしたのか知ることも助けとなるでしょう
  • エラーの原因にたどり着くためにできるだけ多くの情報を残しましょう

多くのエラー

  • 日々、膨大なエラーログが出力されるとすればシステムが不健全であることを示しています
  • 少しずつでもエラーの原因を正しく見極め改善しましょう
  • あまりにも発生頻度が多く軽微なものあれば、ひとまずは絆創膏を張ってふさぎましょう
  • そして、他の致命的かも知れないエラーに隠れ家を提供しない状態を作ることが大切です
  • 回収にかかるコストとリスクの度合いを考えて優先度を決め賢く投資しましょう

伝えたいこと

  • 例外はシステムからの助けての合図です。その状態を解決しましょう
  • 例外が発生したら早い段階でそれに気付く仕組みを導入しましよう
  • チャットなどリアルタイムでそれがわかればベストですね
  • そして、通知がこない状態を常に維持することが出来れば本質的な問題に取り組むことができます
  • 溢れ続けるエラーログも日々改善を続けることで少しずつ小さなものになるでしょう
  • 大きな問題へ発展する前に正しくエラーを改善し続けましょう