return 和 finally
public class MyTest{
public static void main(String args[]) {
System.out.println(test());
}
public static int test() {
try {
System.out.println("try被执行了!");
return 1;
}catch(Exception e) {
System.out.println("catch被执行了!");
e.printStackTrace();
return 2;
}finally {
System.out.println("finally被执行了!");
//return 3;
}
}
}
运行结果:
try被执行了!
finally被执行了!
1
当取消对finally内return 3;注释后,运行结果变为:
try被执行了!
finally被执行了!
3
产生异常时,try 外面的语句是否会继续执行
当只有 try - finally 时,产生异常会抛出异常并执行 finally 中的语句。而后面的语句不会被执行。
try {
System.out.println(10/0);
} finally{
System.out.println("finally");
}
System.out.println("被执行了"); //此处不会被执行
当有catch ,而且捕获到抛出的异常时。后面的语句会正常执行。
try {
System.out.println(10/0);
} catch(Exception e) {
} finally{
System.out.println("finally");
}
System.out.println("被执行了"); //会被执行
try {
System.out.println(10/0);
if(false) {
throw new SQLException();
}
} catch(SQLException e) {
} finally{
System.out.println("finally");
}
System.out.println("被执行了"); //不会被执行