Java中关于try/catch/finally的小结


=Start=

缘由:

Java的基本功还是不扎实,其实是一个很基本的问题,但还是体现出之前学习的时候缺少疑问和实践。

正文:

参考解答:
  1. 不管有没有异常,finally中的代码都会执行;
  2. 当try、catch中有return时,finally中的代码依然会继续执行;
  3. finally是在return后面的表达式运算之后执行的,此时并没有返回运算之后的值,而是把值保存起来,不管finally对该值做任何的改变,返回的值都不会改变,依然返回保存起来的值。也就是说方法的返回值是在finally运算之前就确定了的;
  4. finally代码中最好不要包含return,程序会提前退出,也就是说返回的值不是try或catch中的值。

 

package com.ixyzero.learn;

public class doTest {

    public static void try_catch_finall_test() {
        int i = 1;
        System.out.println("init: i=" + i);
        try {
            i += 1;
            System.out.println("try:\ti=" + i);
            return;
        } catch (Exception e) {
            i += 1;
            System.out.println("catch:\ti=" + i);
            return;
        } finally {
            i += 1;
            System.out.println("finally:\ti=" + i);
            return;
        }
    }

    public static void main(String[] args) {
        try_catch_finall_test();
    }
}
/*
init: i=1
try:	i=2
finally:	i=3
*/

 

参考链接:

=END=


《“Java中关于try/catch/finally的小结”》 有 2 条评论

  1. Spring MVC/Boot 统一异常处理最佳实践
    http://www.zhaojun.im/springboot-exception/
    `
    1. 前言
    2. 异常处理反例
    2.1. 捕获异常后只输出到控制台
    2.2. 混乱的返回方式
    3. 异常处理规范
    3.1. 不要捕获任何异常
    3.2. 统一返回结果集
    3.3. 前端统一处理:
    3.4. 后端统一处理异常
    4. 总结
    `

回复 hi 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注