Upgrade to Pro — share decks privately, control downloads, hide ads and more …

例外処理を理解して、設計段階からエラーを「見つけやすく」「起こりにくく」する

 例外処理を理解して、設計段階からエラーを「見つけやすく」「起こりにくく」する

Takuma Kajikawa

February 01, 2025
Tweet

More Decks by Takuma Kajikawa

Other Decks in Technology

Transcript

  1. 9 例外処理を設計段階に組み込んだ背 9 例外処理を理解す 9 例外を分類す 69 設計に組み込Ç Æ9 例外を使わないパターンを考えてみる

    今日話すこと webアプリケーションの想定。コード例はPHPですが、例外処理全般について話します。
  2. 1. 通常の制御フローとエラーハンドリングを分離する if 文でエラーをチェックする代わりに、例外を用いることで正常系と異常系の処理を明確に分けることができる。 例: try-catch を使うことで、異常が発生した際の処理を一箇所にまとめられる。 2. エラーの発生を明示的に知らせる 例外をthrowする可能性があることをコードを通して、知らせる事ができる。

    例えば、不正な入力 (InvalidArgumentException) や、リソースの取得失敗 (IOException) など。 3. エラー情報を詳細に保持し、デバッグを容易にする スタックトレースを提供し、エラー発生場所や原因を特定しやすくする。 例: RuntimeException("User not found") は、単なる return null よりも原因が明確。 例外の役割
  3. Presentation Infrastructure Application Domain Presentation Infra Application Domain 処理の流れ 例外の流れ

    責務ごとにレイヤーを分けて考えていきます 依存の方向
  4. Presentation Infrastructure Application Domain Presentation Infra Application Domain 処理の流れ 例外の流れ

    責務ごとにレイヤーを分けて考えていきます 依存の方向
  5. Result<T, E>型 成功と失敗のどちらかを明示的に表現できる • 成功 (Ok(T)) → 正常な値 T を返す

    • 失敗 (Err(E)) → エラー情報 E を返す 戻り値として型が明示されるため、エラーが発生する可能性が一目で分かる 定義したResult型を利用 例外ではなく戻り値で結果を返す