1. Spezifische Ausnahmen abfangen
Fangen Sie immer zuerst die spezifischste Ausnahme ab. Dies hilft dabei, das genaue Problem zu identifizieren und angemessen damit umzugehen.
try { // Code that may throw an exception } catch (FileNotFoundException e) { // Handle FileNotFoundException } catch (IOException e) { // Handle other IOExceptions }
2. Vermeiden Sie leere Catch-Blöcke
Leere Catch-Blöcke können Fehler verbergen und das Debuggen erschweren. Protokollieren Sie die Ausnahme immer oder ergreifen Sie Maßnahmen.
try { // Code that may throw an exception } catch (IOException e) { e.printStackTrace(); // Log the exception }
3. Verwenden Sie „Finally Block“ für die Bereinigung
Der „finally“-Block wird verwendet, um wichtigen Code wie das Schließen von Ressourcen auszuführen, unabhängig davon, ob eine Ausnahme ausgelöst wird oder nicht.
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. Kein Wurfobjekt fangen
Vermeiden Sie das Abfangen von Throwable, da es Fehler enthält, die nicht abgefangen werden sollen, wie etwa OutOfMemoryError.
try { // Code that may throw an exception } catch (Exception e) { e.printStackTrace(); // Catch only exceptions }
5. Ausnahmen ordnungsgemäß protokollieren
Verwenden Sie ein Protokollierungsframework wie Log4j oder SLF4J, um Ausnahmen zu protokollieren, anstatt System.out.println zu verwenden.
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. Ausnahmen bei Bedarf erneut auslösen
Manchmal ist es besser, die Ausnahme erneut auszulösen, nachdem sie protokolliert oder eine Aktion ausgeführt wurde.
try { // Code that may throw an exception } catch (IOException e) { logger.error("An error occurred", e); throw e; // Rethrow the exception }
7. Verwenden Sie Multi-Catch-Blöcke
In Java 7 und höher können Sie mehrere Ausnahmen in einem einzigen Catch-Block abfangen.
try { // Code that may throw an exception } catch (IOException | SQLException e) { e.printStackTrace(); // Handle both IOException and SQLException }
8. Vermeiden Sie die übermäßige Verwendung von Ausnahmen für den Kontrollfluss
Ausnahmen sollten nicht für den regulären Kontrollfluss verwendet werden. Sie sind für außergewöhnliche Bedingungen gedacht.
// Avoid this try { int value = Integer.parseInt("abc"); } catch (NumberFormatException e) { // Handle exception } // Prefer this if (isNumeric("abc")) { int value = Integer.parseInt("abc"); }
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3