class MyException extends Exception{
public MyException (String str){
super(str);
}
}
public class Test {
static public void shout(int i) throws MyException{
if(i==0) throw new MyException("first");
}
public static void main(String[] args) {
System.out.println("in main "+call());
}
public static int call() {
int i = 100;
try{
System.out.println("before try");
shout(0);
System.out.println("after try!");
return i*5;
}
catch(RuntimeException e){
e.printStackTrace();
i*=2;
return i*10;
}
finally{
i++;
System.out.println("finally block, i is : "+i);
return i*3;
}
}
}
上列代码中, 26 行的 shout(0)抛出的 MyException 没有被捕捉,按理来说应该编译不通过 但是能通过编译 但是如果我把 38 行的 return i*3;注释掉,就编译不过了 怎么回事?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.