出典: Medium この投稿は、Java で例外を効果的に処理する方法をより深く理解するのに役立ちます。 Java 例外の処理は困難な場合があります。どの Java 例外を処理するか、どの例外を再スローするか、どの例外を単純に無視するかを判断するのは難しい場合があります。ただし、例外の処理や新しいアプリケーションの作成に効果的に役立つ便利なガイドラインが多数あります。彼らについて知りましょう。
- ログ内容に注意してください。
- スローされた例外を無視しないでください。
- グローバル例外ハンドラーを使用します。
- リソースを手動で閉じないでください。
- 早めにスローし、後で例外を処理します。
- Java 例外はログに記録したり再スローしたりしないでください。
- 抑制された例外を調べます。
- throw ステートメントでは、例外を正確に宣言します。
- 最も明白な例外を最初に処理します。
- 最新の例外処理セマンティクスを使用します。
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;
}
その結果、コードが重複し、ログ ファイルが重複したエントリで詰まり、コードの診断がさらに困難になります。
GO TO FULL VERSION