【发布时间】:2016-04-15 22:35:56
【问题描述】:
为什么下面代码的结果是 3,为什么即使编译器首先检查 try,finally get 也会终止并退出方法,为什么 try 中的 return 不会终止方法?
public int returnVal(){
try{
return 2;
}
finally{
return 3;
}
}
【问题讨论】:
-
finally块总是在最后被调用,这就是为什么它被称为“finally”(想想“试试这个,捕获任何异常,最后做那个”)。 -
finally块总是无论如何都会执行.. -
是的,我理解,但是为什么编译器会忽略 try 中的 return 语句,即使它在运行时进入它,为什么 try 中的 return 不会终止方法
-
finally块总是被执行除非您执行System.exit()或JVM 崩溃。
标签: java exception return try-catch