看一个我在中期测试中出错的问题,我想知道:
public double[] readInputFile(String fielane) throws IOException
{
File inputFile = new File(filename);
Scanner in = new Scanner(inputFile);
try
{
readData(in);
return data;
}
finally
{
inputFile.close();
}
}
Run Code Online (Sandbox Code Playgroud)
这会将所有异常传递回链中,还是仅传递已检查的IOException?
该finally块将被执行,然后最初抛出的异常(即,由此引发的第一个异常readData(in))将渗透.
我想这个问题中的警告是关于将被渗透的异常类型.这可能是一个IOException或任何类型的未经检查的异常(即,java.lang.RuntimeException或的子类java.lang.Error).
根据@ zapl的评论编辑:如果finally块抛出IOException(作为结果inputFile.close()),该异常将被渗透到调用者,无论该try块是否抛出异常.