In der Praxis geht es bei der Ausnahmebehandlung um mehr als nur die Kenntnis der Syntax. Das Schreiben von robustem Code ist eher eine Kunst und in diesem Artikel werden Best Practices für die Java-Ausnahmebehandlung besprochen. Diese Java-Best Practices basieren auf den Standard-JDK-Bibliotheken und mehreren Open-Source-Codes zur Behandlung von Fehlern und Ausnahmen. Es ist auch ein praktisches Handbuch für Java-Programmierer zum Schreiben robusten Codes. Best Practices für die Ausnahmebehandlung in der Java-Programmierung
Hier ist meine Sammlung von 10 Best Practices für die Ausnahmebehandlung in der Java-Programmierung. Es gibt Lob und Kritik für geprüfte Ausnahmen in der Java-Programmierung. Die erzwungene Behandlung von Ausnahmen ist eine Funktion der Sprache. In diesem Artikel werden wir versuchen, die Verwendung geprüfter Ausnahmen zu minimieren und lernen, geprüfte und nicht geprüfte Ausnahmen in der Java-Programmierung zu verwenden.
1) Verwenden Sie geprüfte Ausnahmen für behebbare Fehler und ungeprüfte Fehler für Programmierfehler.
Die Auswahl aktivierter oder nicht aktivierter Ausnahmen ist für Java-Programmierer immer verwirrend. Überprüfte Ausnahmen stellen sicher, dass Sie Ausnahmebehandlungscode für Fehlerbedingungen bereitstellen. Dies ist eine Möglichkeit der Sprache, robusten Code zu schreiben, führt aber auch zu viel Unordnung und macht ihn unleserlich. Natürlich erscheint es sinnvoll, Ausnahmen abzufangen und etwas dagegen zu unternehmen, wenn Sie über eine Ersatz- und Wiederherstellungsstrategie verfügen. Wählen Sie zwischen aktivierten Ausnahmen und Laufzeitausnahmen in der Java-Programmierung. Weitere Informationen finden Sie unter aktivierte und nicht aktivierte Ausnahmen.
2) Ressourcen im „finally“-Block schließen oder freigeben
Dies ist eine bekannte Best Practice in der Java-Programmierung und entspricht einem Standard im Umgang mit Netzwerk- und IO-Klassen. Das Schließen von Ressourcen im „finally“-Block gewährleistet eine angemessene Freigabe zuvor verfügbarer und knapper Ressourcen unter normalen und abnormalen Ausführungsbedingungen, was durch den „finally“-Block garantiert wird. Ab Java 7 verfügt die Sprache über eine interessantere Funktion: Automatisierung der Ressourcenverwaltung oder ARM-Blöcke können diese Funktion implementieren. Nichtsdestotrotz müssen wir daran denken, Ressourcen im „finally“-Block zu schließen, was wichtig ist, um begrenzte Ressourcen wie FileDescriptors freizugeben, die in Situationen der Socket- und Dateiprogrammierung verwendet werden.
3) Fügen Sie die Ursache der Ausnahme in den Stack-Trace ein
Oftmals verpacken Java-Bibliotheken und Open-Source-Code eine Ausnahme in eine andere, wenn eine Ausnahme ausgelöst wird, die durch eine andere Ausnahme verursacht wird. Das Protokollieren und Drucken von Root-Ausnahmen wird sehr wichtig. Die Java-Ausnahmeklasse stellt die Methode getCause() zum Abrufen der Ursache der Ausnahme bereit, die weitere Informationen über die Ursache der Ausnahme auf Stammebene liefern kann. Diese Java-Praxis ist beim Debuggen oder bei der Fehlerbehebung sehr hilfreich. Denken Sie immer daran, dass Sie beim Erstellen einer neuen Ausnahme die Quellausnahme übergeben müssen, wenn Sie eine Ausnahme in eine andere Ausnahme einschließen.
4) Geben Sie immer aussagekräftige und vollständige Informationen über die Ausnahme an
Ausnahmeinformationen sind der wichtigste Ort, da sie der erste Ort sind, den der Programmierer sieht, und hier kann man die Grundursache des Problems finden. Hier werden stets genaue und authentische Informationen bereitgestellt. Vergleichen Sie beispielsweise die beiden Ausnahmemeldungen der Ausnahme IllegalArgumentException:
Meldung 1: „Falsches Argument für Methode“
Meldung 2: „Ungültiger Wert für ${argument}: ${value}
In der ersten Meldung wird lediglich angegeben, dass der Parameter unzulässig oder falsch ist. Die zweite Meldung enthält jedoch den Parameternamen und den unzulässigen Wert, was wichtig ist, um die Fehlerursache zu finden. Befolgen Sie beim Schreiben von Ausnahmebehandlungscode in der Java-Programmierung immer diese bewährte Java-Methode.
5) Vermeiden Sie den übermäßigen Gebrauch geprüfter Ausnahmen
Geprüfte Ausnahmen haben bestimmte Vorteile bei der Durchsetzung der Ausführung, sie beschädigen jedoch auch den Code und machen ihn durch die Maskierung der Geschäftslogik weniger lesbar. Solange Sie geprüfte Ausnahmen nicht übermäßig verwenden, können Sie diese Situationen minimieren und das Ergebnis ist saubererer Code. Sie können auch neue Java 7-Funktionen wie einen Catch-Block für mehrere Ausnahmen und die automatische Ressourcenverwaltung zum Entfernen von Duplikaten verwenden.
6) Konvertieren Sie geprüfte Ausnahmen in Laufzeitausnahmen
Dies ist eine der Techniken, mit denen die Verwendung geprüfter Ausnahmen in den meisten Frameworks wie Spring eingeschränkt wird. Die meisten geprüften Ausnahmen von JDBC sind in DataAccessException eingeschlossen, und die Ausnahme (DataAccessException) ist ein nicht geprüfter Ausnahmetyp. Dies ist der Vorteil, den Java Best Practices mit sich bringen. Bestimmte Ausnahmen sind auf bestimmte Module beschränkt, z. B. SQLException, das in der DAO-Schicht platziert wird, und Laufzeitausnahmen mit klarer Bedeutung werden an die Client-Schicht geworfen.
7) Denken Sie daran, dass Ausnahmen die Leistung beeinträchtigen
Bedenken Sie, dass Ausnahmen teuer sind und Ihren Code langsam machen. Wenn Sie eine Methode haben, die aus einem ResultSet liest, löst sie häufig eine SQLException aus, ohne zum nächsten Element zu wechseln, das viel langsamer ausgeführt wird als normaler Code, der keine Ausnahme auslöst. Dadurch wird unnötiges Abfangen und Verschieben von Ausnahmen minimiert, wenn es keinen festen Grund gibt. Anstatt nur Ausnahmen auszulösen und abzufangen, erhalten Sie möglicherweise eine sauberere und leistungsfähigere Lösung, wenn Sie boolesche Variablen zur Darstellung von Ausführungsergebnissen verwenden können. Korrigieren Sie die Fehlerquelle und vermeiden Sie unnötiges Abfangen von Ausnahmen.
8) Vermeiden Sie, dass der Catch-Block leer ist
Es gibt nichts Schlimmeres als einen leeren Catch-Block, denn er verbirgt nicht nur Fehler und Ausnahmen, sondern kann auch dazu führen, dass Ihre Objekte unbrauchbar oder fehlerhaft sind. Ein leerer Catch-Block kann nur dann bedeutungslos werden, wenn Sie absolut sicher sind, dass die Ausnahme den Objektstatus weiterhin in keiner Weise beeinflusst. Die Protokollierung von Fehlern während der Programmausführung ist jedoch immer noch die beste Option. Dies ist nicht nur eine bewährte Java-Methode, sondern die gängigste Methode zum Schreiben von Ausnahmebehandlungscode in der Java-Programmierung.
9) Verwenden Sie Standardausnahmen
Unsere neunte Best Practice empfiehlt die Verwendung standardmäßiger und integrierter Java-Ausnahmen. Die Verwendung von Standardausnahmen, anstatt jedes Mal eigene Ausnahmen zu erstellen, ist die beste Wahl für Wartbarkeit und Konsistenz, jetzt und in der Zukunft. Durch die Wiederverwendung von Standardausnahmen wird der Code besser lesbar, da die meisten Java-Entwickler mit Standardausnahmen wie RuntimeException, IllegalStateException, IllegalArgumentException oder NullPointerException vertraut sind, die aus dem JDK stammen, und sie jede Ausnahme auf einen Blick erkennen können. Der Zweck besteht nicht darin, nach Benutzernamen zu suchen. Definierte Ausnahmen im Code oder in der Dokumentation.
10) Zeichnen Sie Ausnahmen auf, die von einer beliebigen Methode ausgelöst werden
Java stellt die Schlüsselwörter „throw“ und „throws“ bereit, um Ausnahmen auszulösen. Verwenden Sie @throw in Javadoc, um alle Ausnahmen aufzuzeichnen, die von einer beliebigen Methode ausgelöst werden können. Dies wird sehr wichtig, wenn Sie APIs oder öffentliche Schnittstellen schreiben. Jede von einer Methode ausgelöste Ausnahme sollte dokumentiert werden, damit Sie jeden, der sie verwendet, unbewusst warnen können. Dies sind alle Best Practices, die bei der Behandlung von Ausnahmen in der Java-Programmierung befolgt werden müssen. Teilen Sie uns mit, welche Vorgehensweisen beim Schreiben von Ausnahmebehandlungscode in der Java-Programmierung befolgt werden müssen.