为了账号安全,请及时绑定邮箱和手机立即绑定

最终块总是在Java中执行吗?

最终块总是在Java中执行吗?

蝴蝶刀刀 2019-06-03 13:19:20
最终块总是在Java中执行吗?考虑到这段代码,我能绝对肯定认为finally块总是执行,无论发生什么。something()是?try {       something();       return success;  }  catch (Exception e) {        return failure;  }  finally {       System.out.println("I don't know if this will get printed out");}
查看完整描述

4 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

是,finally将在执行trycatch代码块。

唯一的一次finally不会被称为:

  1. 如果你调用

    System.exit()

  2. 如果JVM首先崩溃
  3. 如果jvm到达无限循环(或其他不可中断、非终止的语句),则

    try

    catch

  4. 如果操作系统强制终止JVM进程,例如,

    kill -9 <pid>

    论UNIX
  5. 如果主机系统死亡,例如电源故障、硬件错误、操作系统恐慌等等
  6. 如果

    finally

    块将由守护进程线程执行,所有其他非守护进程线程将在此之前退出。


查看完整回答
反对 回复 2019-06-03
?
富国沪深

TA贡献1790条经验 获得超9个赞

此外,尽管这是一种糟糕的做法,但如果在Finish块中有返回语句,则它将超过来自常规块的任何其他返回。也就是说,以下块将返回false:

try { return true; } finally { return false; }

从Final块抛出异常也是一样的。


查看完整回答
反对 回复 2019-06-03
  • 4 回答
  • 0 关注
  • 484 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号