Mi aspetto che il lettore e il lettore di file bufferti si chiudano e le risorse rilasciate se l'eccezione viene lanciata.Sto utilizzando correttamente le risorse try-with Java 7
public static Object[] fromFile(String filePath) throws FileNotFoundException, IOException
{
try (BufferedReader br = new BufferedReader(new FileReader(filePath)))
{
return read(br);
}
}
Tuttavia, v'è l'obbligo di avere una clausola catch
per la chiusura di successo?
EDIT:
Essenzialmente, è il codice sopra in Java 7 equivalente al di sotto di Java 6:
public static Object[] fromFile(String filePath) throws FileNotFoundException, IOException
{
BufferedReader br = null;
try
{
br = new BufferedReader(new FileReader(filePath));
return read(br);
}
catch (Exception ex)
{
throw ex;
}
finally
{
try
{
if (br != null) br.close();
}
catch(Exception ex)
{
}
}
return null;
}
Dopo aver letto di nuovo la tua domanda, non sono sicuro di averlo capito bene. Puoi spiegarlo per favore? – Maroun
Ciao. Ghepardo, sto cercando di capire il ruolo del primo 'catch 'del tuo esempio per Java 6. I.e. 'catch (Exception ex) {throw ex; } '- sta solo rilanciando l'eccezione, non sta facendo nulla, può essere facilmente rimossa senza alcun danno. O mi sta sfuggendo qualcosa? – Sasha
Non c'è niente di sbagliato nella tua sintassi. Se vuoi saperne di più su try-with-resources, consulta questo articolo: [Java try-with-resources] (http://programmergate.com/java-try-resources/) –