JavaRush /Java Blog /Random-JA /コーヒーブレイク#158。Java で例外を処理するための 10 のヒント

コーヒーブレイク#158。Java で例外を処理するための 10 のヒント

Random-JA グループに公開済み
出典: Medium この投稿は、Java で例外を効果的に処理する方法をより深く理解するのに役立ちます。 コーヒーブレイク#158。 Java で例外を処理するための 10 のヒント - 1Java 例外の処理は困難な場合があります。どの Java 例外を処理するか、どの例外を再スローするか、どの例外を単純に無視するかを判断するのは難しい場合があります。ただし、例外の処理や新しいアプリケーションの作成に効果的に役立つ便利なガイドラインが多数あります。彼らについて知りましょう。
  1. ログ内容に注意してください。
  2. スローされた例外を無視しないでください。
  3. グローバル例外ハンドラーを使用します。
  4. リソースを手動で閉じないでください。
  5. 早めにスローし、後で例外を処理します。
  6. Java 例外はログに記録したり再スローしたりしないでください。
  7. 抑制された例外を調べます。
  8. throw ステートメントでは、例外を正確に宣言します。
  9. 最も明白な例外を最初に処理します。
  10. 最新の例外処理セマンティクスを使用します。

1. ログ内容に注意してください

ソフトウェア開発者は、セキュリティとプライバシーに対するクライアントの権利を常に意識する必要があります。
  • Java プログラムはデータを他のシステムに移動でき、膨大な数の開発者や管理者が Java プログラムを使用して作業できます (バグの修正を含む)。
  • 機密データがログ ファイルに記録されている場合、会社はセキュリティ要件に準拠していなくなり、職を失う可能性があります。

2. スローされた例外を無視しない

例外をキャッチして無視しないでください。例外を非表示にすることは、Java で例外を処理する良い方法ではありません。少なくとも、例外の名前と関連するメッセージを書き留めてください。こうすることで、問題に関する情報をエントリ内で見つけることができます。隠れた例外が原因で Java アプリケーションをデバッグするのは非常に困難です。

3. グローバル例外ハンドラーを使用する

プログラムの実行中には、コード内で以前に検出されなかったいくつかの例外が常に発生します。したがって、キャッチされなかった例外を処理するには、常にグローバル例外ハンドラーを追加してください。これにより、例外のログ記録と処理が可能になるだけでなく、実行時に例外がスローされた場合にアプリケーションがクラッシュするのを防ぐこともできます。

4. リソースを手動で閉じないでください

Java 例外を処理する際のもう 1 つの重要な推奨事項は、JVM がクローズされるリソースに対してclose()メソッドを呼び出せるようにすることです。自分で閉じようとしないでください。これは、 try-resourcesモジュール内のリソースを初期化することで簡単に実現できます。セマンティクス:
public class TryWithResourcesExample {

public static void main(String[] args) throws Exception {

try (Door door = new Door()) {

door.swing();

} catch (Exception e) { ..... }

} finally { .....}

}

}
ご覧のとおり、try...catch ブロックが完了すると、JVM がリソースを閉じて、複雑で修正が難しいリソース リークの可能性を排除します。

5. 早めに例外をスローし、後で例外を処理する

コード内で例外条件が発生するたびに例外をスローします。現在のメソッドを終了する前に、コード行の実行を待たないでください。例外をキャッチするときは、関数をメソッドの最後に配置する必要があります。これにより、メソッド内の catchブロックの数が減り、コードが読みやすく、保守しやすくなります。

6. Java 例外はログに記録したり再スローしたりしないでください。

例外が発生した場合は、次のいずれかを実行します。
  • 例外をログに記録している間、プログラムの作業を続けます。
  • 例外を再度スローし、別の方法でデータをログに記録できるようにします。
両方の段階を組み合わせないでください。以下の例に示すように、ログを記録してから同じ例外を再スローしないでください。
try {

Class.forName("com.min.Example");

} catch (ClassNotFoundException ex) {

log.warning("Class was not found.");

throw ex;

}
その結果、コードが重複し、ログ ファイルが重複したエントリで詰まり、コードの診断がさらに困難になります。

7. 抑制された例外を調べる

抑制された例外は、すべての開発者が知っているわけではない新しい言語機能です。リソースを使用して実証済みのメソッドを実装することにより、2 つの例外を同時にスローできます。この状態は、抑制された例外の存在をクエリすることで簡単に確認できます。この状態が発生したかどうかを判断する唯一の方法は、ターゲット例外に抑制された例外も含まれているかどうかを確認することです。

8. throw ステートメントを使用する場合は、正確な例外を指定します

不注意な開発者は、メソッド本体内で throw ステートメントを使用することにより、汎用例外クラスを使用することになります。しかし、これは Java で例外を処理する最良の方法ではありません。代わりに、メソッドがスローする可能性のある例外を正確に指定してください。iこれは、他の開発者が、特定のメソッドが期待どおりに動作しない場合に使用できるさまざまなエラー処理手法について知るのに役立ちます。

9. 最も明白な例外を最初に処理する

これは Java 例外処理のヒントというよりもコンパイラの要件ですが、開発者は常に最も明白な例外を最初に処理し、確実性の低い例外を最後に処理する必要があります。このルールに従わない場合、JVM は非常に難解で理解しにくいエラー メッセージを含むコンパイル時エラーを返します。コード内の特定の例外を常に処理することで、ソフトウェア開発者としての作業が楽になります。

10. 最新の例外処理セマンティクスを使用する

Java には、開発を簡素化し、Java コードの量を大幅に削減する多くのエラーおよび例外処理機能が用意されています。単一のcatchブロックで複数の例外を処理し、tryブロックを使用してリソースを自動的に閉じる機能を使用します。実行時例外を使用すると、他の開発者がスローされた例外を処理する必要がなくなります。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION