/*
* 1 关于exception 含return (try catch finally执行顺序)
*
* **在return 处进行标记
* a .没有异常最终 在finally里面进行返回
*
* b .出现byzero 在finally里面返回
*
* 结论一:最终执行到finally里面的return
*
* 结论二: finally里面不建议放return
* 因为finally里面的值会对覆盖try catch里面的值,影响最终结果
* warning:finally block does not complete normally
*
* return 最后 注:最后指的不是finally,而是最终的finally
*
* return try 最后 (替代catch)
*
* return catch 最后 (替代try)
*
* return try catch (有没有异常都返回)
*
*
* */
public static int test(int b){
try {
/* b+=10; 没有异常*/
b=b/0;
return b;
} catch (ArithmeticException e) {
System.out.println("第一次");
return b--;
}catch (Exception e) {
System.out.println("第一次");
return b--;
}finally{
b+=2;
return b;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("---1 证明 try 和catch两种可以被总的return 代替,return的作用是try catch的替补");
System.out.println("---2 finally里面的return 对最终的return 起到提前拦截作用");
System.out.println("---3 finally在try catch 执行之后和最终的返回之前执行");
System.out.println("有异常"+ ExceptionReturn.test(9));//
System.out.println("add方法:"+ ExceptionReturn.add(100, 200));
}
}
* 1 关于exception 含return (try catch finally执行顺序)
*
* **在return 处进行标记
* a .没有异常最终 在finally里面进行返回
*
* b .出现byzero 在finally里面返回
*
* 结论一:最终执行到finally里面的return
*
* 结论二: finally里面不建议放return
* 因为finally里面的值会对覆盖try catch里面的值,影响最终结果
* warning:finally block does not complete normally
*
* return 最后 注:最后指的不是finally,而是最终的finally
*
* return try 最后 (替代catch)
*
* return catch 最后 (替代try)
*
* return try catch (有没有异常都返回)
*
*
* */
public static int test(int b){
try {
/* b+=10; 没有异常*/
b=b/0;
return b;
} catch (ArithmeticException e) {
System.out.println("第一次");
return b--;
}catch (Exception e) {
System.out.println("第一次");
return b--;
}finally{
b+=2;
return b;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("---1 证明 try 和catch两种可以被总的return 代替,return的作用是try catch的替补");
System.out.println("---2 finally里面的return 对最终的return 起到提前拦截作用");
System.out.println("---3 finally在try catch 执行之后和最终的返回之前执行");
System.out.println("有异常"+ ExceptionReturn.test(9));//
System.out.println("add方法:"+ ExceptionReturn.add(100, 200));
}
}
* */
最终结果:
---1 证明 try 和catch两种可以被总的return 代替,return的作用是try catch的替补
---2 finally里面的return 对最终的return 起到提前拦截作用
---3 finally在try catch 执行之后和最终的返回之前执行
1
catch语句块
finally语句块
2
add方法:0