Ho una domanda molto stupida per voi :)try-catch e le variabili finali
Per esempio, ho seguito frammento di codice:
class MyClass {
public static void main (String[] args) {
final String status;
try {
method1();
method2();
method3();
status = "OK";
} catch (Exception e) {
status = "BAD"; // <-- why compiler complains about this line??
}
}
public static void method1() throws Exception {
// ...
}
public static void method2() throws Exception {
// ...
}
public static void method3() throws Exception {
// ...
}
}
La domanda è all'interno: perché il compilatore si lamenta di questa linea ?
IntelliJ IDEA dice, che Variable 'status' might already have been assigned to
.
Ma, come posso vedere, non raggiungiamo mai la linea (dove impostiamo status = "OK"
) in caso di situazione eccezionale. Quindi la variabile status
sarà BAD
e tutto dovrebbe essere ok. E se non abbiamo alcuna eccezione, allora otteniamo OK
. E imposterai questa variabile solo una volta.
Qualche idea a riguardo?
Grazie per il vostro aiuto!
compilatore non è così intelligente, e se si dichiara che il metodo potrebbe gettare un compilatore un'eccezione solito essere fatica a controllare, così per semplicità non permette queste cose accada – Toumash