1. Java -Ausnahmezusammenfassung:
Ausnahme bedeutet einen abnormalen Betrieb, wenn das Programm ausgeführt wird
1. Ursprung der Ausnahme:
Die Beschreibung von Problemen in realen Dingen durch die Form von Java -Klassen und in ein Objekt versiegelt
Tatsächlich ist es die Objektmanifestation, nachdem Java abnormale Situationen beschreibt.
2. Es gibt zwei Arten von Problemen: eines ist ein ernstes Problem und das andere ist ein ernstes Problem
In schwerwiegenden Fällen beschreibt Java es durch die Fehlerklasse
Der Fehler wird im Allgemeinen nicht geschrieben, um es zu verarbeiten.
Für nicht-schwerwiegende Java wird von der Ausnahmeklasse beschrieben
Für die Ausnahme können Sie gezielte Verarbeitungsmethoden verwenden, um es zu verarbeiten
3. Die gemeinsamen Ausnahmen umfassen: Array Corner Marker grenzüberschreitende Ausnahmen, Nullzeiger-Ausnahmen ...
4., ob Fehler oder Ausnahme einen gemeinsamen Inhalt hat.
Zum Beispiel: Abnormale Nachrichten, Ursachen usw.
Throwable // Premium -Klasse (die folgenden zwei Klassen werden aus derselben Gemeinsamkeit extrahiert)
|-ERROR
|-Exkption // Zwei Unterklassen (es gibt viele Probleme definiert (Ausnahme auftritt)) /*Der Name der Elternklassen ist der Name der Unterklasse Suffix* /
Beispiel 1: Beispiel für das Auftreten von Ausnahme
Klasse Demo {public int div (int x, int y) {return x/y; }} class ExceptionDemo {public static void main (String args []) {Demo d = new Demo (); int x = d.div (4,0); // 0 als Divisor system.out.println ("x ="+x); System.out.println ("Over"); }}Auslaufergebnisse:
Ausnahme im Thread "Haupt" java.lang.arithmeTexception: / nach Null
bei Demo.div (Ausnahmedemo.java:5)
AT AUCTELDEMO.MAIN (AUCECTEDEMO.JAVA:15)
Aus den obigen Ergebnissen können wir analysieren, dass eine Ausnahme sowohl in den Zeilen 5 als auch in 15 auftrat. Dies liegt daran, dass der Teilungsmechanismus, der Divisor nicht 0 sein kann, und eine Ausnahme wird ausgelöst, wenn der Betrieb ausgeführt wird.
Beispiel 2: Ausnahme Beispiel 2, Speicherüberlauf
Klasse Demo {public int div (int x, int y) {return x/y; }} class ExceptionDemo {public static void main (String args []) { /*Demo d = new Demo (); int x = d.div (4,0); System.out.println ("x ="+x); System.out.println ("Over"); */ byte [] arr = New Byte [1024*1024*1000]; }}Auslaufergebnisse:
Ausnahme im Thread "Haupt" java.lang.outofMemoryError: Java Heap Space
AT AUCTELDEMO.MAIN (AUCECTEDEMO.JAVA:19)
java.lang.outofMemoryError: Repräsentiert die Ausnahme des Speicherüberlaufs
2. Ausnahmehandling:
Für die Ausnahmebehandlung gibt Java einzigartige Aussagen zur Verarbeitung
Format
versuchen
{
Code, der erkannt werden muss;
}
fangen
{
Code für den Umgang mit Ausnahmen; (Verarbeitungsmethode)
}
Endlich
{
Code, der definitiv ausgeführt wird; (Verarbeitungsmethode)
}
Beispiel 1: Demonstrate Try Catch Anweisung
Klasse Demo {public int div (int x, int y) {return x/y; }} class ExceptionDemo {public static void main (String args []) {Demo d = new Demo (); try {int x = d.div (4,0); System.out.println ("x ="+x); } catch (Ausnahme e) {System.out.println ("geschiedener Divisor"); } System.out.println ("Over"); /*byte [] arr = new Byte [1024*1024*1000];*/}}Auslaufergebnisse:
Der Divisor gibt einen Fehler
über
Ergebnisseanalyse: Wenn das Programm ausgeführt wird, wird bei der Ausführung der Abteilungsanweisung ein Ausnahmeobjekt generiert. Neue Archmeticicexception (), die Anweisung aus der Try erfasst dieses Objekt mit den Parametern der Catch -Anweisung.
Ausnahme e = neuer Archmetizexception ();
Nach dem Ausführen der Catch -Verarbeitungsanweisung wird das Problem verarbeitet, die Endanweisung ist abgeschlossen und die Ausgabe ist vorbei
Beispiel 2: Führen Sie gemeinsame Methodenoperationen für erfasste Ausnahmebobjekte aus (die Methode der übergeordneten Klasse Throwable)
String getMessage (); // Ausnahmeinformationen erhalten
toString () // Ausnahmename zurückgeben: Ausnahmeinformationen
printStacktrace () // Ausnahmenname, Ausnahmeinformationen, Ort des Ausnahmevorkommens ausgeben
Klasse Demo {public int div (int x, int y) {return x/y; }} class ExceptionDemo {public static void main (String args []) {Demo d = new Demo (); try {int x = d.div (4,0); System.out.println ("x ="+x); } catch (Ausnahme e) {System.out.println ("geschiedener Divisor"); // Ausnahmeinformationssystem erhalten.out.println (e.getMessage ()); // Ausnahmeinformationen abrufen, Ausnahmename System.out.println (e.toString ()); // Ausnahmeausnahmename, Ausnahmeinformationen, Ort, an dem die Ausnahme auftritt. Printstacktrace (); } System.out.println ("Over"); /*byte [] arr = new Byte [1024*1024*1000];*/}}Auslaufergebnisse:
Der Divisor gibt einen Fehler
/ von Null
java.lang.arithmeMexception: / nach Null
java.lang.arithmeMexception: / nach Null
bei Demo.div (Ausnahmedemo.java:5)
AT AUCTELDEMO.MAIN (AUCECTEDEMO.JAVA:17)
über
Aus der Analyse der laufenden Ergebnisse wird der Standard -Ausnahmebehandlungsmechanismus von JVM tatsächlich die PrintStacktrace -Methode aufgerufen.
Beispiel 3: Zwei Möglichkeiten, mit Ausnahme von Wurf zu handhaben
1. Werfen Sie es zur Verarbeitung in die JVM Virtual Machine
2. Behandeln Sie die geworfenen Ausnahmen selbst
Klasse Demo {public int div (int x, int y) löst Ausnahme aus/*Ausnahme, wo Ausnahmen auftreten können*/{return x/y; }} class ExceptionDemo {public static void main (String args []) {Demo d = new Demo (); int x = d.div (4,0); System.out.println ("x ="+x); System.out.println ("Over"); }}Auslaufergebnisse:
Ausnahmedemo.java:15: Fehler: Nicht gemeldete Ausnahmefehlerausnahme; Es muss zum Werfen gefangen genommen oder deklariert werden
int x = d.div (4,0);
^
1 Fehler
Ergebnisseanalyse: Dies liegt daran, dass keine Ausnahmen verarbeitet werden
Verarbeitungsmethode 1: Werfen Sie kontinuierlich Ausnahmen und lassen
Klasse Demo {public int div (int x, int y) löst Ausnahme aus/*Ausnahme, wo Ausnahmen auftreten können*/{return x/y; }} class ExceptionDemo {public static void main (String args []) löst Ausnahme aus /*Wirf weiter Ausnahmen und geben Sie der virtuellen Maschine* / {Demo d = new Demo (); int x = d.div (4,0); System.out.println ("x ="+x); System.out.println ("Over"); }}Handhabungsmethode 2: Ausnahmen von selbst behandeln
Klasse Demo {public int div (int x, int y) löst Ausnahme aus/*Ausnahme, wo Ausnahmen auftreten können*/{return x/y; }} class ExceptionDemo {public static void main (String args []) {Demo d = new Demo (); Versuchen Sie // mit der Ausnahme selbst {int x = d.div (4,0); System.out.println ("x ="+x); } catch (Ausnahme e) {System.out.println ("geschiedener Divisor"); // Ausnahmeinformationen abrufen, Ausnahmename System.out.println (e.toString ()); System.out.println ("Over"); }}}Zusammenfassen:
Ausnahmen von Funktionen deklarieren. Es ist zweckmäßig, die Sicherheit zu verbessern und die Anrufquelle ohne Verarbeitung von Kompilierungsfehlern zu ermöglichen.
Beispiel 4: Umgang mit mehreren Ausnahmen
1. Bei der Erklärung von Ausnahmen wird empfohlen, spezifischere Ausnahmen zu deklarieren, damit sie genauer behandelt werden können.
2. Deklarieren Sie mehrere Ausnahmen, und es gibt mehrere Fangblöcke. Definieren Sie den unnötigen Fang nicht schnell.
Wenn in mehreren Fangblöcken Vererbungsbeziehungen vorhanden sind, wird der Ausnahmeblock der Elternklasse unten platziert.
Klasse Demo {public int div (int x, int y) löscht Arithmexception, ArrayIndexoutOfBoundSexception {int arr [] = new int [x]; System.out.println (arr [4]); Rückgabe x/y; }} class ExceptionDemo {public static void main (String args []) {Demo d = new Demo (); try {int x = d.div (4,0); System.out.println ("x ="+x); } catch (AritheMeticexception e) / *Teilen Sie das Ausnahmebobjekt, das empfangen wird. Die erste Ausführung ist * / {System.out.println ("geschiedener Divisor"); // Ausnahmeinformationen abrufen, Ausnahmename System.out.println (e.toString ()); System.out.println ("Over"); } catch (arrayIndexoutOfBoundSexception e) / *das Objekt mit Daten außerhalb der Grenzen empfangen, die zweite Ausführung ist * / {System.out.println ("arrayout"); // Ausnahmeausnahmeinformationssystem.out.println (e.toString ()); } catch (Ausnahme E) /*Empfangen Sie die Ausnahmeklassenausnahme und führen Sie sie am Ende aus. Es wird empfohlen, dies nicht zu schreiben. }}}Auslaufergebnisse:
Das Array ist außerhalb der Grenzen
Java.lang.ArrayIndexoutofBoundSexception: 4
Anregung:
Bei der Verarbeitung des Fangs müssen Sie spezifische Verarbeitungsmethoden im Fang definieren.
Definieren Sie nicht einfach e.printstacktrace ().
Schreiben Sie nicht nur eine Ausgabeanweisung
Da Benutzer es nicht verstehen können, ist es am besten, es in einer Datei zu speichern und an unsere Entwickler zu senden, um es regelmäßig anzuzeigen.
Beispiel 5: benutzerdefinierte Ausnahme
Haben Sie festgestellt, dass die von uns verwendeten Ausnahmen in Java alle eingekapselt sind
In der tatsächlichen Entwicklung können jedoch die Ausnahmen in unserem Programm sein, dass Java nicht verkapselt wird.
Zu diesem Zeitpunkt müssen Sie es selbst definieren
Nach dem obigen Code definiere ich, dass der Divisor keine negative Zahl sein kann. Der Code ist wie folgt
Klasse Demo {public int div (int x, int y) löst FusException/*Top an eine Ausnahme*/{if (y <0) {neue fusxception ("Der Nenner hat eine negative Zahl ------/bu fushu", y); /*Das Objekt, das die Ausnahme manuell aussieht*/} return x/y; }} class fusxception erweitert die Ausnahme {private int value; FushuException (String m, int value) {super (m); /*Übergeben Sie Parameter an die GetMessage -Methode der Ausnahmeklassenausnahme von der Eltern*/ this.Value = value; } public int getValue () /*Customized -Methode, negative Zahl zurücksenden* / {Rückgabewert; }} class ExceptionDemo {public static void main (String args []) {Demo d = new Demo (); try {int x = d.div (4, -3); System.out.println ("x ="+x); } catch (fushuException e) /*Catch Exception -Objekt* / {System.out.println (e.getMessage ()+e.getValue ()); } System.out.println ("Over"); }}Auslaufergebnisse:
Eine negative Zahl erscheint im Nenner ------/bu fushu-3
über
Aus den obigen Ergebnissen können wir sehen
In diesem Programm ist der Divisor -3, was ebenfalls als falsch angesehen wird und nicht durchgeführt werden kann.
Dann müssen Sie eine benutzerdefinierte Beschreibung dieses Problems haben.
Beim Werfen eines Ausnahmebobjekts in die Funktion muss die entsprechende Verarbeitungsaktion angegeben werden.
Oder intern behandelt.
Deklarieren Sie entweder auf der Funktion, damit der Anrufer damit umgehen kann.
Im Allgemeinen erscheinen Ausnahmen in der Funktion und müssen in der Funktion deklariert werden.
Es wurde festgestellt, dass es nur den Ausnahmamen im gedruckten Ergebnis gab, aber es gab keine Ausnahmeinformationen.
Da die benutzerdefinierte Ausnahme keine Informationen definiert.
Wie definiere ich Ausnahmeinformationen?
Da der Betrieb von Ausnahmeinformationen in der übergeordneten Klasse abgeschlossen wurde.
Daher muss die Unterklasse die Ausnahmeinformationen nur an die übergeordnete Klasse übergeben, wenn sie sie durch die Super -Anweisung erstellt.
Anschließend können Sie über die GetMessage -Methode direkt benutzerdefinierte Ausnahmeinformationen abrufen.
Benutzerdefinierte Ausnahmen müssen eine benutzerdefinierte Ausnahme von Erbritanzklassen sein .
Erben Ausnahmegrund:
Ein Ausnahmesystem hat eine Funktion: Da sowohl Ausnahmeklassen als auch Ausnahmeobjekte geworfen werden.
Sie sind alle throwbar. Diese Wurfbarkeit ist ein einzigartiges Merkmal des Throwable -Systems.
Nur Klassen und Objekte in diesem System können durch Würfe und Würfe betrieben werden.
Der Unterschied zwischen Würfen und Wurf
Würfe werden bei Funktionen verwendet.
Wurf wird innerhalb der Funktion verwendet.
Die Ausnahmeklasse gefolgt von Würfen. Kann von mehreren gefolgt werden. Durch Kommas getrennt.
Dem Wurf folgt das Ausnahmebobjekt.
Beispiel 6: Es gibt eine spezielle Ausnahme in der Unterklasse in Ausnahme RunTimeException
Wenn die Ausnahme in den Funktionsinhalt geworfen wird, kann die Funktion ohne Deklaration deklariert werden und die Zusammenstellung wird übergeben.
Wenn die Ausnahme in der Funktion deklariert wird, kann der Anrufer sie nicht verarbeiten, und die Zusammenstellung wird durch durchgeführt
Der Grund, warum es nicht notwendig ist, die Funktion zu deklarieren, ist, dass der Anrufer sie nicht umgehen muss.
Wenn diese Ausnahme eintritt, hoffe ich, dass das Programm aufhört, da es während des Laufens nicht ausgeführt wird. Ich hoffe, dass das Programm aufhören wird, nachdem das Programm aufhört wird.
Der Programmierer hat den Code geändert.
Klasse Demo {public int div (int x, int y) löst Fusxception/*Das Ergebnis des Werfens oder nicht werfensfest ist das gleiche*/{if (y <0) {werfen neu fusxexception ("Der Nenner hat eine negative Zahl -----/bu fushu", y); } return x/y; }} class fushuException erweitert RunTimeException /*Inheritance RunTimeException* /{fusxexception (String m, int value) {super (m); }} class ExceptionDemo {public static void main (String args []) {Demo d = new Demo (); int x = d.div (4, -3); /*Ausnahme wird nach dem Ausführen angezeigt. Es wird kein Problem mit der Kompilierung geben*/ system.out.println ("x ="+x); System.out.println ("Over"); }}Auslaufergebnisse:
Ausnahme im Thread "Haupt" fusxexception: Eine negative Zahl erscheint im Nenner ------/bu fushu
bei Demo.div (Ausnahmedemo.java:7)
AT AUCTELDEMO.MAIN (AUCECTEDEMO.JAVA:26)
Aus den obigen Ergebnissen können wir sehen:
Bei benutzerdefinierter Ausnahme: Wenn die Ausnahme eintritt, kann die Operation nicht fortgesetzt werden.
Lassen Sie die benutzerdefinierte Ausnahme RunTimeException erben.
Für Ausnahmen gibt es zwei Arten:
1. Ausnahme während der Zusammenstellung erkannt.
2. Ausnahme, die während der Kompilierung nicht erkannt wird (Laufzeitausnahme. RunTimeException und seine Unterklassen)
Der obige Artikel versteht den Ausnahmebehandlungsmechanismus in Java umfassend, was ich mit Ihnen geteilt habe. Ich hoffe, es kann Ihnen eine Referenz geben und ich hoffe, Sie können Wulin.com mehr unterstützen.