java中finally代码块总会被执行么?

Java 必知必会 第 14 篇

does finally always execute in java

问题

有一个 try/catch 代码块,其中包含一个打印语句。finally代码块总会被执行么?

示例:

try {  
    something();  
    return success;  
}  
catch (Exception e) {
    return failure;  
}  
finally {  
    System.out.println("i don't know if this will get printed out.");
}

##回答

  1. finally将会被调用。
    只有以下情况 finally不会被调用:
  • 当你使用 System.exit()
  • 其他线程干扰了现在运行的线程(通过 interrupt方法)
  • JVM 崩溃( crash )了

Answered by Jodonnell, edited by jpaugh.

  1. //示例代码
class Test
{
    public static void main(String args[])
    {
    	System.out.println(Test.test());
    }

    public static int test()
    {
    	try {  
            	return 0;  
    	}  
    	finally {  
    	    System.out.println("finally trumps return.");
    	}
    }
}

输出:

finally trumps return.
0
全部评论

相关推荐

10-13 16:58
门头沟学院 Java
面了100年面试不知...:一周七天,一天去一家上班😍😍😍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务