我想了解以下内容,假设我有以下代码块:
try{
// do something
asynchronousMethodCallThatWritesFileOutputStreamToSocket(fileOutputStream);
}catch (SomeException e){
//handle exception
}finally{
closeFileOutputStream(fileOutputStream);
}
我的问题是在异步方法完成之前finally块关闭流吗?或者它会以某种方式等待?如果你知道,请从书中引用任何引用。非常感谢你。
N.B。这是伪代码,我知道try-with-resources模式。
答案 0 :(得分:2)
程序总是以未捕获的异常退出,因为异步函数没有正确地尝试捕获。
基于Java Asynchronous Exceptions: Can I catch them?
唯一的问题是它们(例外,ndr)可能出现在程序的任何地方, 所以很可靠地抓住它们很难。你基本上必须包装 所有主题的
run
方法和main
中的try..catch
方法 阻止,但你不能为你无法控制的线程(比如 摆动EDT,或定时器的线程等。)。