Jeder Java -Code kann Ausnahmen wie: Code selbst, Code aus dem Java Development Environment -Paket oder Java -Laufzeitsystem ausführen. Egal wer es ist, Sie können eine Ausnahme durch die Java -Wurf -Erklärung machen. Jede Ausnahme aus der Methode muss mit der Throw -Klausel verwendet werden.
1. Throws Throw -Ausnahme
Wenn eine Methode eine Ausnahme hat, aber nicht in der Lage ist, eine solche Ausnahme zu behandeln, können Sie die Throw -Klausel verwenden, um die geworfene Ausnahme bei der Methodenerklärung zu deklarieren. Zum Beispiel kann ein Auto beim Laufen versagen, und das Auto selbst kann diesen Fehler nicht bewältigen. Lassen Sie den Fahrer damit umgehen.
Die Anweisung Throws wird verwendet, um die Art der Ausnahme zu deklarieren, wenn die Methode definiert ist. Mehrere Ausnahmen können mit Commas aufgeteilt werden. Das Syntaxformat der Throws -Anweisung lautet:
methodName löst Ausnahme1, Ausnahme2, .., ExceptionN aus
{
}
Ausläufe nach dem Methodnamen Exception1, Ausnahme2,…, ExceptionN ist die Liste der Ausnahmen, die ausgeworfen werden sollen. Wenn eine Methode eine Ausnahmliste von Ausnahmen ausgelöst hat, wird die Methode keine Ausnahmen dieser Typen und ihrer Unterklasse -Typen behandelt, sondern wird auf die Methode geworfen, die die Methode aufruft und von dieser abgewickelt wird. Zum Beispiel:
Java.lang.Exception importieren; (String [] args) {// Hauptmethode try {// Versuch Anweisungsausnahme -Informationen Pop (); Ausnahmebereich "); // Ausnahmeinformationen ausgeben}}}
Nachdem Sie die Ausnahme an den Anrufer über das Schlüsselwort Throws geworfen haben, können Sie es weiterhin auswerfen, wenn der Anrufer nicht die Ausnahme abwickeln möchte. Am Ende muss es jedoch einen Anrufer geben, der die Ausnahme bewältigen kann.
Die POP -Methode behandelt die Ausnahme nicht negativesarraysizeexception, sondern wird von der Hauptfunktion behandelt.
Die Regel für Würfe, um Ausnahmen zu werfen:
1) Wenn es sich um eine deaktivierte Ausnahme, dh Fehler, RunTimeException oder deren Unterklassen handelt, können Sie die Ausnahme erklären, die ohne Verwendung des Schlüsselworts Throws geworfen werden soll, und die Zusammenstellung wird weiterhin reibungslos verlaufen, aber es wird vom System während des Systems ausgeführt werden Laufzeit.
2) Alle überprüften Ausnahmen, die mit der Methode geworfen werden können, müssen deklariert werden. Das heißt, wenn eine Methode eine prüfbare Ausnahme aufweist, wird sie entweder mit einer Try-Catch-Anweisung erfasst oder mit einer Throw-Klausel deklariert, da sie sonst einen Kompilierfehler verursacht.
3) Nur wenn eine Ausnahme ausgelöst wird, muss der Anrufer der Methode die Ausnahme verarbeiten oder wiederwerfen. Wenn der Methode -Anrufer die Ausnahme nicht bewältigen kann, sollte er sie weiterhin werfen, anstatt sie ganz zu schlucken.
4) Die aufrufende Methode muss alle Regeln zur Bearbeitung und Deklaration der Ausnahme und Deklaration befolgen. Wenn eine Methode überschrieben wird, können Ausnahmen, die sich von der überschriebenen Methode unterscheiden, nicht deklariert werden. Jede deklarierte Ausnahme muss eine ähnliche oder Unterklasse der von der überragenden Methode deklarierten Ausnahme sein.
Zum Beispiel:
Die Grundlage für die Bestimmung, dass eine Ausnahme in einer Methode auftreten kann, lautet wie folgt:
1) In der Methode enthält eine Wurfanweisung. Beispielsweise hat der Catch -Code -Block der obigen Methode () eine Wurfanweisung.
2) Andere Methoden werden aufgerufen, und andere Methoden verwenden Schläfenklausel, um eine Ausnahme von Wurf zu erklären. Beispielsweise nennt die Methode method3 () die Methode1 () -Methode, und die Methode Method1 () methodie erklärt, dass eine IOException geworfen wird, sodass eine IOException in der Methode3 () -Methode auftreten kann.
2. Verwenden Sie Wurf, um eine Ausnahme zu werfen
Wurf erscheint immer im Funktionskörper und wird verwendet, um eine Ausnahme vom Typ Throwable zu werfen. Das Programm endet unmittelbar nach der Throw-Anweisung, die Anweisung, nachdem es nicht ausgeführt werden kann, und suchen Sie in allen Versuchsblöcken, die sie (möglicherweise in der Aufruffunktion der oberen Ebene) enthalten innen nach außen.
Wir wissen, dass Ausnahmen Instanzobjekte der Ausnahmeklasse sind und Instanzobjekte der Ausnahmeklasse erstellen können, die durch Wurfanweisung geworfen werden können. Das Syntaxformat dieser Aussage lautet:
neue Ausnahmename werfen;
Werfen Sie zum Beispiel ein Ausnahmebiel der IOException -Klasse:
neue IOException werfen;
Es ist zu beachten, dass nur Instanzobjekte wirft, die Klassenwurf- oder Unterklassen werfen können. Die folgende Operation ist falsch:
neue Zeichenfolge werfen ("Ausnahme");
Dies liegt daran, dass String keine Unterklasse der Throwable -Klasse ist.
Wenn eine Check -Ausnahme ausgelöst wird, sollten Sie auch die Art der Ausnahme erklären, dass die Methode den Method -Header einwerfen kann. Der Anrufer dieser Methode muss auch nach dem Umgang mit der geworfenen Ausnahme prüfen.
Wenn alle Methoden die erworbene Ausnahmeberechnung für Schicht werfen, verarbeitet der JVM sie schließlich und die Verarbeitung ist auch sehr einfach, weshalb die Ausnahmenachricht und die Stapelinformationen drucken soll. Wenn ein Fehler oder eine RunTimeException geworfen wird, hat der Anrufer der Methode die Möglichkeit, die Ausnahme zu verarbeiten.
Pakettest; 0 Neue MyException ("Der Divisor kann keine negative Zahl sein"); Int B = 0; .out.println (e. GetMessage ()); Catch (Ausnahme auf e) {// andere Ausnahmen verarbeiten system.out.println ("Andere Ausnahme im Programm ist aufgetreten"); String -Nachricht;