Ausnahmebehandlung und Klassifizierung in Java

Anormal: Bezieht sich auf verschiedene unerwartete Zustände, z. B.: Datei nicht gefunden, Netzwerkverbindungsfehler, unzulässige Parameter usw. Eine Ausnahme ist ein Ereignis, das während der Ausführung des Programms auftritt und den normalen Befehlsfluss stört. Java beschreibt eine Vielzahl verschiedener Ausnahmen in vielen Unterklassen der Throwable-Klasse in der API. Daher sind Java-Ausnahmen alle Objekte, Instanzen von Throwable-Unterklassen, die Fehlerbedingungen beschreiben, die in einem Codeteil auftreten. Wenn die Bedingung generiert wird, löst der Fehler eine Ausnahme aus.

1. Anomalieklassifizierung

Fügen Sie hier eine Bildbeschreibung ein

Throwable ist die Oberklasse aller Fehler oder Ausnahmen in der Java-Sprache. Die nächste Ebene ist in Fehler und Ausnahme unterteilt

1. Die Fehlerklasse bezieht sich auf interne Fehler und Ressourcenerschöpfungsfehler des Java-Laufzeitsystems. Die Anwendung wirft keine Objekte dieses Typs. Wenn ein solcher Fehler auftritt, müssen Sie nicht nur dem Benutzer mitteilen, sondern auch versuchen, das Programm sicher zu beenden.

Fehler: Es handelt sich um einen Fehler, den das Programm nicht verarbeiten kann. Dies bedeutet ein ernstes Problem beim Ausführen der Anwendung. Die meisten Fehler haben nichts mit den vom Code-Writer ausgeführten Aktionen zu tun, sondern stellen Probleme mit der JVM (Java Virtual Machine) dar, wenn der Code ausgeführt wird. Beispiel: Bei einem Java Virtual Machine-Ausführungsfehler (Virtual MachineError) tritt ein OutOfMemoryError auf, wenn die JVM nicht mehr über die zum Fortfahren des Vorgangs erforderlichen Speicherressourcen verfügt. Wenn diese Ausnahmen auftreten, wählt die Java Virtual Machine (JVM) im Allgemeinen die Thread-Beendigung

2. Die Ausnahme hat zwei Zweige, einer ist RuntimeException, z. B. NullPointerException, ClassCastException, der andere ist CheckedException, z. B. IOException und SQLException, die durch E / A-Fehler verursacht werden.

Laufzeitausnahmen: Alle Ausnahmen der RuntimeException-Klasse und ihrer Unterklassen, z. B. NullPointerException (Nullzeigerausnahme), IndexOutOfBoundsException (Ausnahme für tiefgestellte Indexe) usw. Diese Ausnahmen werden nicht aktiviert, und das Programm kann auswählen, ob sie erfasst und behandelt werden sollen Es oder nicht. Diese Ausnahmen werden im Allgemeinen durch Programmlogikfehler verursacht, und das Programm sollte solche Ausnahmen aus logischer Sicht so weit wie möglich vermeiden.

Das Merkmal der Laufzeitausnahme ist, dass der Java-Compiler sie nicht überprüft. Das heißt, wenn diese Art von Ausnahme im Programm auftreten kann, selbst wenn sie nicht mit einer try-catch-Anweisung abgefangen oder von der throw-Klausel ausgelöst wird. es wird die Zusammenstellung bestanden.

Nicht-Laufzeit-Ausnahme (Kompilierungsausnahme): Dies ist eine andere Ausnahme als RuntimeException, die zur Exception-Klasse und ihren Unterklassen gehört. Aus Sicht der Programmsyntax ist dies eine Ausnahme, die behandelt werden muss. Wenn dies nicht behandelt wird, kann das Programm nicht kompiliert werden. B. IOException, SQLException usw. und benutzerdefinierte Exception-Ausnahmen passen die Check-Exception im Allgemeinen nicht an.

2. Ausnahmebehandlung

1. Wenn ein Problem auftritt, wird keine spezifische Behandlung durchgeführt, es werden jedoch weiterhin
 Ausnahmen für den Anrufer ausgelöst . Es gibt drei Formen: eine ist werfen, eine wirft und die andere wird automatisch vom System ausgelöst.

Hinweis:
 Der Unterschied zwischen Wurf und Wurf:

(1) Unterschiedliche Positionen: Würfe werden in Funktionen verwendet, gefolgt von Ausnahmeklassen, denen mehrere folgen können, während Würfe in Funktionen verwendet werden, gefolgt von Ausnahmeobjekten.
(2) Verschiedene Funktionen: Würfe werden verwendet, um Ausnahmen zu deklarieren, so dass der Aufrufer nur die möglichen Probleme der Funktion kennt und Vorverarbeitungsmethoden angeben kann; wirft bestimmte Problemobjekte und führt zum Werfen aus, die Funktion ist beendet. Wechseln Sie zum Anrufer und werfen Sie das spezifische Problemobjekt zum Anrufer. Das heißt, wenn die throw-Anweisung unabhängig existiert, definieren Sie unten keine anderen Anweisungen, da sie nicht ausgeführt werden können.
(3) Würfe stellen die Möglichkeit von Ausnahmen dar, und diese Ausnahmen treten nicht notwendigerweise auf; werfen bedeutet, Ausnahmen zu werfen, und das Ausführen von werfen muss eine Art Ausnahmeobjekt auslösen.
(4) Beide sind passive Methoden zur Behandlung von Ausnahmen (Negativität bedeutet hier nicht, dass diese Methode nicht gut ist), lösen nur Ausnahmen aus oder können sie auslösen, aber die Funktion behandelt die Ausnahme nicht, die eigentliche Ausnahme wird von der Funktion The Upper behandelt Layer-Call-Verarbeitung.

2. Gezielte Behandlungsmethode: Ausnahme abfangen

Try{
    
    
//有可能发生异常的代码
}
 Catch(异常类 变量)
{
    
    
// 处理异常的代码,捕获
}
finally{
    
    
//一定会被执行的代码
}


Drittens der Unterschied zwischen RuntimeException und CheckedException

1. Der Unterschied zwischen
  RuntimeException und CheckedException RuntimeException: Beim Definieren der Methode muss nicht deklariert werden, dass RuntimeException ausgelöst wird, und diese RuntimeException muss beim Aufrufen dieser Methode nicht abgefangen werden. Kurz gesagt, ungeprüfte Ausnahmen müssen nicht ausprobiert werden ... fangen ... oder werfen Mechanismen, um damit umzugehen.
  
  CheckedException: Wenn Sie die Methode definieren, müssen Sie alle Ausnahmen deklarieren, die ausgelöst werden können. Wenn Sie diese Methode aufrufen, müssen Sie die aktivierte Ausnahme abfangen oder die Ausnahme übergeben.
  
  Kurz gesagt, eine Methode muss alle aktivierten Ausnahmen deklarieren, die ausgelöst werden können. Nicht aktivierte Ausnahmen sind entweder nicht kontrollierbar (Fehler) oder sollten vermieden werden (RuntimeException). Wenn die Methode nicht alle möglicherweise auftretenden geprüften Ausnahmen deklariert, gibt der Compiler eine Fehlermeldung aus.

Ich denke du magst

Origin blog.csdn.net/weixin_49005845/article/details/110872695
Empfohlen
Rangfolge