Die throws Exception
Deklaration ist eine automatisierte Methode, um Methoden zu verfolgen, die aus erwarteten, aber unvermeidbaren Gründen eine Ausnahme auslösen können. Die Deklaration ist in der Regel spezifisch für den Typ oder die Arten von Ausnahmen, die ausgelöst werden können, wie z. B. throws IOException
oder throws IOException, MyException
.
Wir alle haben oder werden irgendwann Code schreiben, der unerwartet stoppt und eine Ausnahme aufgrund von etwas meldet, das wir vor dem Ausführen des Programms nicht erwartet hatten, wie z. B. Division durch Null oder Index außerhalb der Grenzen. Da die Fehler von der Methode nicht erwartet wurden, konnten sie nicht "abgefangen" und mit einer try catch-Klausel behandelt werden. Alle ahnungslosen Benutzer der Methode würden diese Möglichkeit ebenfalls nicht kennen und ihre Programme würden ebenfalls aufhören.
Wenn der Programmierer weiß, dass bestimmte Arten von Fehlern auftreten können, diese Ausnahmen jedoch außerhalb der Methode behandeln möchten, kann die Methode eine oder mehrere Arten von Ausnahmen für die aufrufende Methode "auslösen", anstatt sie zu behandeln. Wenn der Programmierer nicht deklariert hat, dass die Methode eine Ausnahme auslösen könnte (oder wenn Java nicht in der Lage wäre, sie zu deklarieren), könnte der Compiler dies nicht wissen und es wäre Sache des zukünftigen Benutzers der Methode, darüber Bescheid zu wissen. Fangen und behandeln Sie alle Ausnahmen, die die Methode möglicherweise auslöst. Da Programme viele Ebenen von Methoden haben können, die von vielen verschiedenen Programmen geschrieben wurden, wird es schwierig (unmöglich) zu verfolgen, welche Methoden Ausnahmen auslösen könnten.
Obwohl Java Ausnahmen deklarieren kann, können Sie dennoch eine neue Methode mit nicht behandelten und nicht deklarierten Ausnahmen schreiben. Java kompiliert sie und Sie können sie ausführen und auf das Beste hoffen. Java lässt Sie Ihre neue Methode nicht kompilieren, wenn es eine Methode verwendet, die als auslösende Ausnahme (n) deklariert wurde, es sei denn, Sie behandeln entweder die deklarierten Ausnahmen in Ihrer Methode oder deklarieren Ihre Methode als auslösende (n) Ausnahme (n) oder wenn es mehrere Ausnahmen gibt, können Sie einige behandeln und den Rest werfen.
Wenn ein Programmierer erklärt, dass die Methode einen bestimmten Ausnahmetyp auslöst, ist dies nur eine automatisierte Methode, um andere Programmierer mit der Methode zu warnen, dass eine Ausnahme möglich ist. Der Programmierer kann dann entscheiden, die Ausnahme zu behandeln oder die Warnung weiterzuleiten, indem er erklärt, dass die aufrufende Methode dieselbe Ausnahme auslöst. Da der Compiler gewarnt wurde, dass die Ausnahme bei dieser neuen Methode möglich ist, kann er automatisch prüfen, ob zukünftige Aufrufer der neuen Methode die Ausnahme behandeln oder deklarieren und das eine oder andere erzwingen.
Das Schöne an dieser Art von Lösung ist, dass der Compiler beim Melden Error: Unhandled exception type java.io.IOException
die Datei- und Zeilennummer der Methode angibt , die zum Auslösen der Ausnahme deklariert wurde. Sie können dann einfach das Geld übergeben und deklarieren, dass Ihre Methode auch "IOException auslöst". Dies kann bis zur Hauptmethode erfolgen, bei der das Programm dann angehalten und die Ausnahme dem Benutzer gemeldet wird. Es ist jedoch besser, die Ausnahme abzufangen und auf nette Weise damit umzugehen, z. B. dem Benutzer zu erklären, was passiert ist und wie sie behoben werden kann. Wenn eine Methode die Ausnahme abfängt und behandelt, muss sie die Ausnahme nicht mehr deklarieren. Das Geld bleibt sozusagen dort stehen.