在 try-catch-finally 块中调用异步方法



我想了解以下内容,假设我有以下代码块:

try{
    // do something
    asynchronousMethodCallThatWritesFileOutputStreamToSocket(fileOutputStream);
}catch (SomeException e){
    //handle exception
}finally{
    closeFileOutputStream(fileOutputStream);
}

我的问题是最终块会在异步方法完成之前关闭流吗?还是会以某种方式等待?如果你知道的话,请引用书中的任何引文。谢谢。

:注:这是伪代码,我知道尝试资源模式。

程序总是退出,并出现未捕获的异常,因为异步函数未正确尝试捕获。

基于 Java 异步异常:我可以捕获它们吗?

唯一的问题是它们(异常,ndr)可能发生在程序中的任何位置, 因此,可靠地捕获它们很难。你基本上必须包装 所有线程的run方法和try..catch中的main方法 块,但你不能对你无法控制的线程这样做(比如 摆动EDT,或计时器的线程等)。

最新更新