Java的异常处理机制,能够帮助解决一些问题,特别是在catch部分捕捉到异常时,事物可以进行回滚(sql的增删改算,查询由于没有对数据进行改变,所以用不上回滚),从而避免了错误的操作,Java的方法的返回值,标志着一个方法的结束,不管是在try,catch,还是在finally里之要出现了return语句,就代表改方法已经结束,但是在Java异常处理机制中,try,catch中即使有return,也会去执行finally中的语句,这就是为什么我们在写异常的时候通常要加上finally。而且,顺带发现return还能返回一个表达式,如下面的例子
public class Test {
public static int test() {
int a=1;
try {
FileInputStream f=new FileInputStream("d://ddddddddd"); //由于这个路径的文件不存在,所以在运行时会出现异常
return a+=10;
} catch (Exception e) {
e.printStackTrace();
return a+=100;
}finally{
return a=a+1000;
}
}
public static void main(String[] args) {
System.out.println(test());
}
}
运行结果为1101,下面的例子是没有异常的
public class Test {
public static int test() {
int a=1;
try {
return a+=10;
} catch (Exception e) {
e.printStackTrace();
return a+=100;
}finally{
return a=a+1000;
}
}
public static void main(String[] args) {
System.out.println(test());
}
}
运行的结果为1011,通过上面的两个例子可以看出来,即使try,catch中有 return,最后还是会执行finally中的语句,如果finally中return语句,还是以finally为准,至于什么原因暂时不清楚。