Java 我应该如何处理catch块中发生的异常?
在上面的代码中,我想关闭catch块中的读取缓冲区,但是我发现in.close中的函数也抛出了一个IOException。如果我在catch块中嵌套另一个try-catch块,看起来很难看。那么,处理这种问题的正确方法是什么呢?在finally块中关闭资源,而不是在catch块中关闭资源 关闭finally块中的资源,而不是catch块中的资源 您可以使用finally block。最后,每次执行块,除非jvm异常退出 Java 7 try with resources语句要自动关闭,需要显式关闭resource流 try with resources语句是一个try语句,它声明了一个 或者更多的资源。资源是一个对象,必须在 程序结束了。try with resources语句 确保在语句末尾关闭每个资源。任何 对象,该对象实现java.lang.AutoCloseable,其中包括所有 实现java.io.Closeable的对象可以用作资源 示例-Java 我应该如何处理catch块中发生的异常?,java,exception,exception-handling,Java,Exception,Exception Handling,在上面的代码中,我想关闭catch块中的读取缓冲区,但是我发现in.close中的函数也抛出了一个IOException。如果我在catch块中嵌套另一个try-catch块,看起来很难看。那么,处理这种问题的正确方法是什么呢?在finally块中关闭资源,而不是在catch块中关闭资源 关闭finally块中的资源,而不是catch块中的资源 您可以使用finally block。最后,每次执行块,除非jvm异常退出 Java 7 try with resources语句要自动关闭,需要显式关
try
{
// actual code.
}
catch (IOException e) {
// handle exception
}
finally
{
try
{
in.close();
}
catch (IOException e) {
// handle exception
}
}
您可以使用finally block。最后,每次执行块,除非jvm异常退出
Java 7 try with resources语句要自动关闭,需要显式关闭resource流
try with resources语句是一个try语句,它声明了一个
或者更多的资源。资源是一个对象,必须在
程序结束了。try with resources语句
确保在语句末尾关闭每个资源。任何
对象,该对象实现java.lang.AutoCloseable,其中包括所有
实现java.io.Closeable的对象可以用作资源
示例-
try
{
// actual code.
}
catch (IOException e) {
// handle exception
}
finally
{
try
{
in.close();
}
catch (IOException e) {
// handle exception
}
}
请勿入内,这是专门用于清理的
来自最终阻止文档
运行时系统始终在finally块中执行语句,而不管try块中发生了什么。所以这是进行清理的最佳场所
请勿入内,这是专门用于清理的
来自最终阻止文档
运行时系统始终在finally块中执行语句,而不管try块中发生了什么。所以这是进行清理的最佳场所
非常感谢您的推荐。这是java 7中的一个新功能,对吗?它确实是解决我问题的完美解决方案。非常感谢。如果您正在考虑如何正确关闭输入流,那么这是最好的方法,非常感谢您的推荐。这是java 7中的一个新功能,对吗?它确实是解决我问题的完美解决方案。非常感谢。如果您正在考虑如何正确关闭输入流,那么这是最好的方法,是的
try(BufferedReader in
= new BufferedReader(new FileReader(file))){
while((thisLine=in.readLine())!=null){
...
}
}catch (IOException e) {
...
}
BufferedReader in
= new BufferedReader(new FileReader(file));
try {
while((thisLine=in.readLine())!=null){
...
}
} catch (IOException e) {
//in.close();
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
in.close
}
try {
in = new BufferedReader(new FileReader(file));
// stuff here
} finally {
try {
in.close()
} catch (IOException e) {} // ignore
}