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

时间:2016-07-11 11:44:58

标签: java android asynchronous try-catch

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

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

我的问题是在异步方法完成之前finally块关闭流吗?或者它会以某种方式等待?如果你知道,请从书中引用任何引用。非常感谢你。

N.B。这是伪代码,我知道try-with-resources模式。

1 个答案:

答案 0 :(得分:2)

程序总是以未捕获的异常退出,因为异步函数没有正确地尝试捕获。

基于Java Asynchronous Exceptions: Can I catch them?

  

唯一的问题是它们(例外,ndr)可能出现在程序的任何地方,   所以很可靠地抓住它们很难。你基本上必须包装   所有主题的run方法和main中的try..catch方法   阻止,但你不能为你无法控制的线程(比如   摆动EDT,或定时器的线程等。)。