mercoledì 27 marzo 2013

Q30


Given:
public class Main {
       public static void main(String[] args) throws Exception {
             doSomething();
       }
       private static void doSomething() throws Exception {
             System.out.println("Before if clause");
             if (Math.random() > 0.5) {
                    throw new Exception();
             }
             System.out.println("After if clause");
       }
}


Which two are possible outputs?
A.
Before if clause
Exception in thread “main” java.lang.Exception
At Main.doSomething (Main.java:8)
At Main.main (Main.java:3)
B.
Before if clause
Exception in thread “main” java.lang.Exception
At Main.doSomething (Main.java:8)
At Main.main (Main.java:3)
After if clause
C.
Exception in thread “main” java.lang.Exception
At Main.doSomething (Main.java:8)
At Main.main (Main.java:3)
D.
Before if clause
After if clause
Risposta : A e D
In ogni caso per prima cosa viene stampato :
Before if clause
Quindi la risposta C è esclusa.

A seconda della funziona matematica casuale si può entrare nella cattura dell'eccezione :  throw new Exception(); il che scatena l'eccezione e l'uscita :
Exception in thread "main" java.lang.Exception
Oppure si prosegue evitando l'eccezione e quindi si stampa :
After if clause
Quindi
A:
Before if clause
Exception in thread "main" java.lang.Exception
D:
Before if clause
After if clause
 
 
 
 
 




 
 

Nessun commento:

Posta un commento