package com.ami.practice;
public class UnrechebleStatement {
public static void main(String[] args) {
System.out.println(m());
}
public static int m(){
try{
int x=0;
int y=10/x;
return y;
}catch(Exception e){
return 1;
}finally {
return 2;
}
}
}
答案 0 :(得分:3)
带有Expression的return语句尝试将控制权转移给包含它的方法的调用者; Expression的值成为方法调用的值。更确切地说,执行这样的return语句首先评估Expression。如果表达式的评估由于某种原因突然完成,则返回语句因此而突然完成。如果表达式的评估正常完成,产生值V,则return语句突然完成,原因是返回值为V.
[...]
前面的描述说“尝试转移控制”而不仅仅是“转移控制”,因为如果在try块或者catch子句包含return语句的方法或构造函数中有任何try语句(§14.20),那么任何最终在将控制权转移给方法或构造函数的调用者之前,这些try语句的子句将按顺序执行,最内层到最外层。突然完成finally子句可能会破坏由return语句启动的控制权转移。
特别是第二部分应该完美地回答你的问题
答案 1 :(得分:1)
最后总是执行阻止...执行尝试或抓住......
答案 2 :(得分:1)
除了在某些情况下,总是被称为 1)如果调用System.exit() 2)如果jvm崩溃了 3)如果我们使用嵌套的try catch