1.特定の例外をキャッチ
常に最も具体的な例外を最初にキャッチします。これは、問題を正確に特定し、適切に処理するのに役立ちます。
try { // Code that may throw an exception } catch (FileNotFoundException e) { // Handle FileNotFoundException } catch (IOException e) { // Handle other IOExceptions }
2.空の Catch ブロックを避ける
空の catch ブロックはエラーを隠し、デバッグを困難にする可能性があります。常に例外をログに記録するか、何らかのアクションを実行してください。
try { // Code that may throw an exception } catch (IOException e) { e.printStackTrace(); // Log the exception }
3.クリーンアップには Final Block を使用する
Finally ブロックは、例外がスローされるかどうかに関係なく、リソースを閉じるなどの重要なコードを実行するために使用されます。
BufferedReader reader = null; try { reader = new BufferedReader(new FileReader("file.txt")); // Read file } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } }
4.投げ物を捕まえないでください
Throwable には OutOfMemoryError.
など、捕捉されるべきではないエラーが含まれるため、捕捉しないようにしてください。
try { // Code that may throw an exception } catch (Exception e) { e.printStackTrace(); // Catch only exceptions }
5.例外を適切に記録する
System.out.println.
を使用する代わりに、Log4j や SLF4J などのログ フレームワークを使用して例外をログに記録します。
private static final Logger logger = LoggerFactory.getLogger(MyClass.class); try { // Code that may throw an exception } catch (IOException e) { logger.error("An error occurred", e); }
6.必要に応じて例外を再スローする
場合によっては、例外をログに記録するか、何らかのアクションを実行した後に、例外を再スローする方がよい場合があります。
try { // Code that may throw an exception } catch (IOException e) { logger.error("An error occurred", e); throw e; // Rethrow the exception }
7.マルチキャッチブロックを使用する
Java 7 以降では、単一の catch ブロックで複数の例外をキャッチできます。
try { // Code that may throw an exception } catch (IOException | SQLException e) { e.printStackTrace(); // Handle both IOException and SQLException }
8.制御フローの例外の乱用を避ける
例外は通常の制御フローには使用しないでください。これらは例外的な状況を想定したものです。
// Avoid this try { int value = Integer.parseInt("abc"); } catch (NumberFormatException e) { // Handle exception } // Prefer this if (isNumeric("abc")) { int value = Integer.parseInt("abc"); }
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3