チェック済み例外とチェックなし例外のどちらを選択すべきか?
Java でカスタム例外クラスを定義する場合、開発者はチェック済み例外とチェックなし例外のどちらを選択するかで悩まれます。未チェックの例外。適切な分類を識別するには、次のガイドラインを考慮してください。
次の場合にチェック例外を使用する:
-
予測可能だが回避できないエラー:基礎となるエラーが合理的に予想できるものの、呼び出し元の制御の範囲を超えている場合のチェック例外。たとえば、実行中の削除が原因でファイル読み取り操作が失敗した場合、チェック例外によって、この予測可能ではあるが避けられないエラーが呼び出し元に適切に通知されます。
-
回復可能な理由: を選択します。エラーによって呼び出し元による有意義な回復が可能になる場合にのみチェック例外が発生します。ユーザーが存在しないファイルにアクセスしようとすると、呼び出し元はユーザーに代替パスの入力を求めることができ、この予測可能なエラーから回復できる可能性を示します。
次の場合に未チェックの例外を使用します。
-
その他すべての例外条件:チェック済み例外の基準を満たさないすべてのシナリオでは、デフォルトでチェックなし例外になります。これには、エラーが予測不可能、回避可能、または回復不可能な状況が含まれます。
さまざまなレベルでの再評価:
例外分類の適切性は異なる場合があります。プログラムのさまざまなレベルで。例外が不適切なレベルでキャッチされた場合は、次のことを考慮してください:
-
チェックされた例外を未チェックの例外でラップする: チェックされた例外が現在のレベルで処理できない場合は、変換します。さらに伝播するには、未チェック例外に変換します。
-
未チェック例外をチェック済み例外に変換する例外: 逆に、処理が必要なレベルで非チェック例外が発生した場合は、予測可能なエラーの予期を強制するために、それをチェック例外として再スローします。
メンテナンス適切な抽象化:
チェック例外と非チェック例外の両方について、適切なレベルの抽象化。基礎となる実装をカプセル化する汎用例外クラスを使用して、実装固有の詳細の公開を回避します。たとえば、コード リポジトリでは、データベースまたはファイル システムの実装からの例外を一般化するには、RepositoryException の方が適しています。
以上がJava のチェック済み例外とチェックなし例外: いつどちらを選択すべきですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。