Sí, el alcance de la prueba se limita a eso.De hecho el alcance comienza con {y termina con}, por lo tanto esto también sería crear un sub-ámbito
void foo() {
{
Ini myIni = new Ini(new FileReader(myFile));
}
myIni.get("toto"); //error here, since myIni is out of scope
}
Para solucionar el problema, inicializar myIni
con nula, y tenga en cuenta que si falla el intento, myIni.get("toto");
resultaría en una NullPointerException.
Por lo tanto, necesitaría dar cuenta de eso o lanzar otra excepción desde su bloque catch.
comprobar NULL:
Ini myIni = null;
try {
myIni = new Ini(new FileReader(myFile));
} catch (IOException e) {
e.printStackTrace();
}
if(myIni != null) {
myIni.get("toto");
//access the rest of myIni
} else {
//handle initialization error
}
Throw excepción:
Ini myIni = null;
try {
myIni = new Ini(new FileReader(myFile));
} catch (IOException e) {
e.printStackTrace();
throw new MyCustomInitFailedException(); //throw any exception that might be appropriate, possibly wrapping e
}
myIni.get("toto");
Como ya se ha sugerido por @khachik también se puede poner el bloque try alrededor de toda su uso de myIni
si eso es posible y apropiado. La solución que elijas depende de tus otros requisitos y tu diseño.
Do not do 'e.printStackTrace()'. Simplemente "arroja e". – BalusC