Werfen Ausnahme in main-Methode
Ich versuche herauszufinden, warum ich die throw
exception in der main-Methode, während ich try
/catch
Blöcke, die verarbeiten kann diese Ausnahmen überhaupt?
Selbst wenn ich löschen throws IllegalArgumentException,InputMismatchException
Teil, das Programm wird trotzdem kompiliert und funktioniert perfekt.
public static void main(String[] args) throws IllegalArgumentException,InputMismatchException{
boolean flag = true;
Scanner in = new Scanner(System.in);
do{
try{
System.out.println("Please enter the number:");
int n = in.nextInt();
int sum = range(n);
System.out.println("sum = " + sum);
flag = false;
}
catch(IllegalArgumentException e){
System.out.println(e.getMessage());
}
catch(InputMismatchException e){
System.out.println("The number has to be as integer...");
in.nextLine();
}
- Sie sind am Meer und eine person ertrinken. Die Ausnahme ist Ihr Freund, die sagen, 'Oh Mann, sehen Sie dort! Er ertrinken! Sollten wir was tun?". In Ihrem
catch
clausole definieren Sie IhresaveTheMan()
Methode. By the way, wenn es ist schon eine Rettungsschwimmer-innen Methoden, die Sie versuchen, auszuführen, unter dertry
Konstrukt, es gibt wirklich keine Notwendigkeit, geben Sie diecatch
clausole da Ihre Hilfe wird nutzlos sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie nur eine Ausnahme werfen, wenn Sie es wollen, behandelt werden, indem Sie eine "höhere" Funktion.
(Hinweis: Die Ausnahme, nicht einfach verschwinden, wenn es geworfen wird. Es muss noch behandelt werden.)
Verwenden Sie eine
try/catch
block, wenn Sie wollen, Griff die Ausnahme sofort.Wenn Sie bereits eine
try/catch
- block zum abfangen einer Ausnahme, dann haben Sie keine Notwendigkeit zu werfen, dass die Ausnahme höher.Jede Methode hat zwei Entscheidungen zu befassen, mit den Ausnahmen, die auftreten können, in diese Methode:
Erste Wahl ist die Ausnahme behandeln, die innerhalb der Methode mit einem catch und sagen Sie niemandem darüber. Dieser Ansatz ist nützlich bei der Behandlung von Fehlern, die keinen Einfluss auf die Methode aufrufen dieser.
Zweite Wahl ist, fangen die exception in der Methode, kann oder kann nicht etwas tun, um die Ausnahme behandeln. Außerdem sagen die aufrufende Methode, dass etwas schief gegangen ist, also tun Sie das nötige. Dieser Ansatz ist sinnvoll und sollte verwendet werden, für die Ausnahmen, die ein problem verursacht, die müssen weitergegeben werden, die oben auf dem Aufruf-Hierarchie.
Einfache Antwort:
Brauchen Sie nicht zu erklären, eine Methode zu werfen, wenn alle, die checked exceptions werden behandelt, indem der code.
Siehe auch:
http://www.javapractices.com/topic/TopicAction.do?Id=129
Manchmal die aufrufende Partei nicht wollen, eine Ausnahme geworfen, weil Sie nicht wollen, um mit solchen Ausnahmen. In solchen Fällen wir das tun, schließen Sie den code werfen könnte Ausnahmen mit einem try-catch-finally-block.
Aber in Fällen, wo Sie möchten, um speziell zu fangen eine bestimmte Ausnahme, und versuchen, etwas dagegen zu tun, oder wenn Sie wollen, werfen Sie einen Kunden Ausnahme an die aufrufende Partei, dann sollten Sie zuerst fangen.
Es wird empfohlen, nie zu schlucken Ausnahmen und auch nicht zu fangen und wieder werfen-die gleiche Ausnahme.
Grundsätzlich checked exceptions verarbeitet werden muss. Compiler zwingt, das zu tun. Sie können dies entweder durch try-catch oder throws-Klausel . Einer von Ihnen ist ausreichend.
Würden Sie resort zum ersten Ansatz, wenn Sie nicht wollen, zu behandeln, die Ausnahme vom aufrufenden code.
Sind Sie den Umgang mit Ihrem Ausnahme in Ihren code mit try-catch. Dies ist der Grund.