Java >> Java Tutorial >  >> Java

Vermeiden Sie häufige Fehler bei der Behandlung von Ausnahmen

Während des Schwachstellen-Scannens stellten wir fest, dass viele Ausnahmen über die Druckanweisung behandelt wurden. Das ist keine sehr effiziente Art, Ausnahmen zu behandeln.

Print-Anweisungen sind immer noch besser, als nichts zu schreiben, was zu handhaben ist. Das wird als Schlucken einer Ausnahme bezeichnet. Ein guter Ansatz zur Behandlung von Ausnahmen besteht darin, eine Möglichkeit zu schreiben, diese Ausnahmen zu protokollieren oder diese Ausnahmen mit Stack-Trace während der Laufzeit auszulösen. In diesem Beitrag habe ich einige Möglichkeiten gezeigt, mit Ausnahmen umzugehen.

Was sind die Ausnahmen?

Ausnahmen sind Fehlerereignisse. Diese Ereignisse treten während der Laufzeit eines Programms auf. Dies stört im Allgemeinen den Ablauf des Programms.

Es gibt drei Komponenten für Exception-Handler – try , catch, und endlich .

try – Dieser Teil der Ausnahmebehandlung enthält Code, der bei jedem Flow ausgeführt wird.

catch – Wenn Code im try-Teil eine Laufzeitausnahme auslöst, wird diese im catch-Teil abgefangen.

finally – Dies enthält den Code, den Sie ausführen möchten, nachdem ein Teil der Ausführung versucht wurde. Dadurch wird sichergestellt, dass der finally-Block auch dann ausgeführt wird, wenn unerwartete Ausnahmen auftreten. Es wird hauptsächlich verwendet, um Ressourcen zu bereinigen.

Arten von Ausnahmen 

  • Ungeprüfte Ausnahmen –  Ausnahmetypen, die direkte oder indirekte Unterklassen einer Klasse RuntimeException sind , das sind die ungeprüften Ausnahmen.
  • Überprüfte Ausnahmen – Ausnahmen, die Exception erben -Klasse werden als geprüfte Ausnahmen bezeichnet. RuntimeException werden ebenfalls von Exception erweitert , aber der Client-Code muss sie nicht behandeln, während geprüfte Ausnahmen von der catch- oder throws-Klausel behandelt werden müssen.

So behandeln Sie Ausnahmen

Welche Ausnahmen sind zu verwenden? Aktiviert oder deaktiviert?

Falls der Code nicht weiß, was zu tun ist, wenn eine Ausnahme ausgelöst wird, sollte es sich um eine ungeprüfte Ausnahme handeln. Wenn Code, der eine Ausnahme verwendet, weiß, was zu tun ist, um sich von dieser Ausnahme zu erholen, und diese Informationen protokolliert, sollte dies als Ausnahme markiert werden.

Kapselung beibehalten

Geben Sie keine Ausnahme von der Datenzugriffsebene an die Geschäftsobjektebene weiter.
Beispiel – SQLException ist ein RuntimeException . Wenn die Datenzugriffsschicht diese Ausnahme auf die folgende Weise auslöst, wird der catch-Block nichts tun, sondern sie unterdrücken.

public void dataAccessCode()
{
    try
    {

    }
    catch (SQLException ex)
    {
        ex.printStacktrace();
     }
}

Andererseits kann dieselbe Laufzeitausnahme, um die Kapselung beizubehalten, wie unten gezeigt in eine andere ungeprüfte Ausnahme umgewandelt werden

public void dataAccessCode()
{
    try
   {

   }
   catch (SQLException ex)
   {
      throw new RuntimeException(ex);
    }
}

Best Practices für Ausnahmen

1) Benutze den finally-Block zum Säubern des Codes
2) Ignoriere oder unterdrücke keine Ausnahme
3) Protokolliere Ausnahmen einmal
4) Benutze Ausnahmen nicht zur Flusskontrolle

Referenzen

  1. Best Practices für Ausnahmen
  2. Geprüfte vs. ungeprüfte Ausnahmen
  3. Überprüfte Ausnahmen von Bruce Eckel


Java-Tag