すべて

019-004 - 例外の伝播と再スロー

例外の伝播と再スローは、エラー処理の責任を適切に分担するために重要です。メソッド内で例外をキャッチしても処理できない場合、throwsキーワードで呼び出し元に伝播させます。キャッチした例外を別の例外でラップして再スローすることで、より適切なエラー情報を提供できます。また、例外チェーンを使って元の例外を保持することで、デバッグ時に根本原因を追跡できます。

例外の伝播と再スローの理解は、レイヤードアーキテクチャでのエラーハンドリングに不可欠です。各レイヤーで適切なエラー情報に変換し、上位レイヤーに伝えることで、保守性の高いエラー処理が実現できます。実務では、DAOレイヤーでのSQLExceptionをビジネス例外に変換、低レベルIOExceptionをアプリケーション例外にラップなどで活用されます。たとえば、データベースエラーをDataAccessExceptionとして再スローし、元のSQLExceptionを原因として保持します。

この項目を学ぶことで、レイヤー間のエラー伝播を適切に設計でき、デバッグしやすい例外処理が実装できます。例外チェーンの活用力が身につきます。前提知識として、例外処理の基本とメソッドのthrows宣言を理解している必要があります。

問題 (13)

無料トライアル
019-004-001

例外の伝播:ポイント使用検証システム

# 例外の伝播:ポイント使用検証システム **この問題では**: 保有ポイントと使用ポイントを<a href="https://javadrill.tech/problems/002/001">標準...

無料トライアル
019-004-002

例外の伝播:レシピ検証システム

# 例外の伝播:レシピ検証システム **この問題では**: 調理時間の入力値を検証し、正常値の場合はレシピ準備完了メッセージを、負の値の場合はメソッド間を自動伝播した例外のエラーメッセージを標準出力...

019-004-003

例外の種類:ゼロ除算エラーを処理する

<p><strong>この問題では</strong>: 整数のゼロ除算でスローされるArithmeticExceptionを<a href="https://javadrill.tech/proble...

019-004-004

例外の種類:複数の例外を処理する

<p><strong>この問題では</strong>: 文字列を整数に変換し配列要素にアクセスする処理を行い、NumberFormatExceptionとArrayIndexOutOfBoundsEx...

019-004-005

例外の伝播:throwsによる例外委譲

# 例外の伝播:throwsによる例外委譲 **この問題では**: ファイル名の入力に応じてFileReaderクラスで例外を発生させ、throws句を使って例外を呼び出し元に伝播させ、結果を標準出...

019-004-006

カスタム例外:独自の例外クラス

# カスタム例外:独自の例外クラス **この問題では**: `InvalidAgeException`カスタム例外クラスを定義し、年齢検証メソッドが無効な年齢値に対して正しく例外をスローし、有効な年...

019-004-007

安全な計算機プログラム

**この問題では**: 2つの整数と<a href="https://javadrill.tech/problems/003">演算子</a>を入力として受け取り、四則演算を行い、結果を標準出力に表示...

019-004-008

メソッド間の例外伝播

3つのメソッドを通じた例外伝播を実装してください。methodCで除算を行い、methodB・methodAは例外をキャッチせず伝播させます。

019-004-009

例外の再スロー

# 例外の再スロー **この問題では**: `processNumber(String input)`メソッドを実装します。入力文字列を整数に変換し、変換に成功した場合はその整数値を返します。`Nu...

019-004-010

例外伝播チェーン:メソッド間の例外の流れ

# 例外伝播チェーン:メソッド間の例外の流れ **この問題では**: `innerMethod()`、`middleMethod()`、`outerMethod()` の3つのメソッドを実装し、例外...

019-004-011

throws宣言による例外伝播

# throws宣言による例外伝播 **この問題では**: <a href="https://javadrill.tech/problems/008">メソッド</a>に`throws`宣言を付けて...

019-004-012

例外翻訳パターン

# 例外翻訳パターン **この問題では**: 低レベルの<a href="https://javadrill.tech/problems/019/001">例外</a>(NumberFormatEx...

019-004-013

例外のキャッチと再スロー

# 例外のキャッチと再スロー **この問題では**: <a href="https://javadrill.tech/problems/019/001">例外</a>をキャッチしてログ出力した後、同...