我想了解以下内容,假设我有以下代码块:
try{
// do something
asynchronousMethodCallThatWritesFileOutputStreamToSocket(fileOutputStream);
}catch (SomeException e){
//handle exception
}finally{
closeFileOutputStream(fileOutputStream);
}
我的问题是最终块会在异步方法完成之前关闭流吗?还是会以某种方式等待?如果你知道的话,请引用书中的任何引文。谢谢。
注:注:这是伪代码,我知道尝试资源模式。
程序总是退出,并出现未捕获的异常,因为异步函数未正确尝试捕获。
基于 Java 异步异常:我可以捕获它们吗?
唯一的问题是它们(异常,ndr)可能发生在程序中的任何位置, 因此,可靠地捕获它们很难。你基本上必须包装 所有线程的
run
方法和try..catch
中的main
方法 块,但你不能对你无法控制的线程这样做(比如 摆动EDT,或计时器的线程等)。