2016-06-29 13 views
0

Ich bin nicht in der Lage, dieses Programm zu verstehen. Ich erwarte, dass es "Hallo Welt" ausgibt, aber stattdessen druckt es nur die "Welt". Ich dachte, dass zuerst der try Block ausgeführt würde, "Hello" und "" druckend, dann später, wenn es 1/0 trifft, würde es einen ArithmeticException werfen. Die Ausnahme würde von catch Block gefangen werden, dann würde "Welt" gedruckt werden.Java Exception Handhabung Verständnis Problem

Das Programm ist wie folgt.

import java.util.*; 
class exception{ 
    public static void main(String args[]) 
    { 
     try 
     { 
      System.out.println("Hello"+" "+1/0); 
     } 
     catch(ArithmeticException e) 
     { 
      System.out.println("World"); 
     } 
    } 
} 
+1

Warum denkst du, es würde "Hallo" vor der Auswertung von '1/0' drucken? – user2357112

+1

Es muss den Wert von "Hello" + "" + 1/0 "interpretieren, bevor es etwas druckt. '" Hallo "' wird nicht gedruckt, weil Sie nicht sagen, dass Sie _just_ '" Hello "', eher '" Hello "' plus etwas, das die Ausnahme verursacht, drucken. –

+0

Danke @ChrisSprague. Ich habe verstanden. –

Antwort

1

Zuerst wird "Hello"+" "+1/0 ausgewertet. Und dann als Argument an System.out.println(...) übergeben. Aus diesem Grund wird eine Ausnahme ausgelöst, bevor System.out.println(...) aufgerufen worden wäre.

+0

Das war sehr hilfreich, danke für Ihre Zeit zu antworten. –

+0

Das Vergnügen ist alles meins. – Shiro

5

Die Ausnahme wird ausgelöst, bevor die println-Funktion aufgerufen wird. Der Argumentwert muss vor dem Funktionsaufruf berechnet werden.

Damit Ihr Programm die Ergebnisse, die Sie erwarten zu erreichen, können Sie den Code in das try Block bearbeiten würde wie folgt:

 try 
    { 
     // this will work and execute before evaluating 1/0 
     System.out.print("Hello "); 
     // this will throw the exception 
     System.out.print(1/0); 
    } 
    catch(ArithmeticException e) 
    { 
     System.out.println("World"); 
    } 
+0

Danke für die Antwort, jetzt verstanden. –

1

scannen Es ist nicht einfach die „Worte“ links nach rechts. Alles innerhalb der () muss erfolgreich ausgewertet werden, und wenn es dann gedruckt wird.

Es sieht "Hallo" und es ist in Ordnung. Als nächstes sieht es bei 1/0 und erzeugt einen Fehler.

Für den Fall, dass die Mathematik erfolgreich ausgewertet wurde, würde versucht, "Hallo" und das Ergebnis zu verketten. Und wenn das erfolgreich war, würde es gedruckt werden.

+0

Verstanden, Sir. wirklich schätzen. –