Try-Catch-Throw in der gleichen Java-Klasse
Ist es möglich, zu fangen, eine Methode in der aktuellen Klasse des try-catch-block ausgeführt wird? zum Beispiel:
public static void arrayOutOfBoundsException(){
System.out.println("Array out of bounds");
}
.....
public static void doingSomething(){
try
{
if(something[i] >= something_else);
}
catch (arrayOutOfBoundsException e)
{
System.out.println("Method Halted!, continuing doing the next thing");
}
}
Wenn dies möglich wie wird es sein, den richtigen Weg zu nennen, den catch-Methode?
Wenn dies nicht möglich, kann jemand mich in die richtige Richtung, wie zu stoppen eine Ausnahme Stoppt mein Programm die Ausführung in der Java - ohne zu erstellen, keine neuen Klassen in das Paket, oder die Festsetzung der code, der produziert ArrayOutOfBoundsException Fehler.
Vielen Dank im Voraus,
Eine Java-Rookie
- Die
catch
Klausel sieht eine Ausnahme von der Klasse, die nicht Methode. Daher dere
in den Parametern ist einException
Objekt (oder Klasse)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie wollen zu tun ist Griff ein Ausnahme.
Das ist alles, was Sie brauchen. Keine zusätzlichen Klassen, keine zusätzlichen Methoden.
Eine Ausnahme ist eine spezielle Art von Klasse, die können werden "geworfen" (Sie können werfen Sie es selbst mithilfe der
throw
keyword oder Java kann ein Wurf für Sie, wenn Sie beispielsweise versuchen, auf ein array-index, der nicht existiert, oder versuchen, führen eine operation auf einenull
). Eine Ausnahme geworfen wird "Auspacken" Ihre call-stack ("die Flucht" von jedem Funktionsaufruf), bis Ihr Programm endlich beendet. Es sei denn, Siecatch
es, das ist genau das, was die oben beschriebene syntax nicht.Also, wenn Sie schreiben eine Funktion
a()
nennt man eine Funktionb()
nennt man eine Funktionc()
undc()
warf eine Ausnahme, aber die Ausnahme war nicht gefangen inb()
oderc()
, konnte Sie noch fangen Sie es ina()
:Sagte, dass, wenn es möglich ist, zu verhindern, dass eine Ausnahme geworfen wird, in den ersten Platz, das ist oft eine bessere Idee. In Ihrem Fall wäre dies möglich, da alle arrays in Java wissen um Ihre eigene Länge:
Hmm.. ich denke, Sie sind ein bisschen verwirrt. Sie nicht fangen eine Methode mit try-catch-Blöcke. Sie fangen von Ausnahmen. Ausnahmen sind eher die Dinge.
Diese allein (beachten Sie die Hauptstadt "Eine" ArrayOutOfBoundsException) verhindert, dass Ihr Programm zu beenden, selbst wenn die Exception geworfen wird. Sie brauchen nicht zu erklären, "arrayOutOfBoundsException ()" - Methode.
Beachten Sie das kleine "e"? Das ist die Referenz, die Sie verwenden können, um auf diese Ausnahme. So können Sie Fragen, die Dinge auf diese Ausnahmen mit dieser kleinen lokale variable. Zum Beispiel, wenn Sie drucken möchten, wo die exception passiert ist, Sie können tun
e.printStackTrace();
.Abfangen von Ausnahmen mit try-catch-block. Nicht sicher, wenn Sie fangen können Methoden mit diesem.
Das 'e' in den catch() ist die Referenz für die Bezugnahme auf eine Ausnahme.
Die Ausnahme bezieht sich auf diese, wenn Sie es wünschen, um zu überprüfen, Ihre gegebenen Zustand und eine warn-oder Fehlermeldung über den Zustand nicht immer zufrieden.
Ich denke du meinst die arrayOutOfBoundsException Methode werfen die Ausnahme verursacht... Wenn ich das richtig verstehe:
Ist, dass das, was Sie fordern?
Ich versuche zu verstehen, was du fragst, deine Terminologie ist falsch, in stellen 🙂 Wenn Sie versuchen, und legen Sie eine index out of bounds, erhalten Sie eine eingebaute Ausnahme jedenfalls
ArrayIndexOutOfBoundsException
. Sie können fangen Sie dieses und verwenden Sie diese innerhalb der Methode, oder werfen Sie es mit einemclass XX throws ArrayIndexOutOfBoundsException
Deklaration in der header-Methode, so dass die aufrufende Methode kann es fangen (Ihr nicht benötigt, zu fangen, eineArrayIndexOutOfBoundsException
da es eineRuntimeException
- d.h., es passiert nichts wenn es geht, nicht erfasst wird, ist es deaktiviert.Siehe diesen wiki-Artikel für mehr details: http://en.wikibooks.org/wiki/Java_Programming/Throwing_and_Catching_Exceptions.
Es ist nicht klar, was du meinst mit "Ist es möglich zu fangen-Methode". In Ihrem Fall sollten Sie Ihren code schreiben, als :
Kein
ArrayOutOfBoundsException
benötigt wird.