Mentre provavo la funzione multi-catch ho trovato nel mio m1()
metodo che tutto funziona come previsto.
Tuttavia, nello m2()
stesso codice non viene compilato. Ho appena cambiato la sintassi per ridurre il numero di righe di codice.
public class Main {
public int m1(boolean bool) {
try {
if (bool) {
throw new Excep1();
}
throw new Excep2();
//This m1() is compiling abs fine.
} catch (Excep1 | Excep2 e) {
return 0;
}
}
public int m2(boolean b) {
try {
throw b ? new Excep1() : new Excep2();
//This one is not compiling.
} catch (Excep1 | Excep2 e) {
return 0;
}
}
private static interface I {
}
private static class Excep1 extends Exception implements I {
}
private static class Excep2 extends Exception implements I {
}
}
Perché il metodo non si m2()
compila?