Ich erwarte, dass der gepufferte Reader und der Dateireader geschlossen und die Ressourcen freigegeben werden, wenn die Ausnahme ausgelöst wird.
public static Object[] fromFile(String filePath) throws FileNotFoundException, IOException
{
try (BufferedReader br = new BufferedReader(new FileReader(filePath)))
{
return read(br);
}
}
Gibt es jedoch eine Voraussetzung für eine catch
erfolgreiche Schließung?
BEARBEITEN:
Entspricht der obige Code in Java 7 im Wesentlichen dem folgenden für 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;
}
catch
Beispiels für Java 6 zu verstehen. Das heißt, catch (Exception ex) { throw ex; }
es wird nur die Ausnahme erneut ausgelöst, es tut nichts, es kann leicht entfernt werden, ohne dass es verletzt wird. Oder fehlt mir etwas?