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 ブロックを使用します
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"); }
以上がtry-catch ブロックを使用して例外を処理するためのベスト プラクティス。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。