【JAVA 学习笔记】try catch finally实例详解 如果有return怎么办

try-catch-finally 

@Test
    public void testTryCatch(){
        try {
            System.out.println("Try Before");
            //发生异常
            int a =10/0;
            System.out.println("Try After");
        }catch (Exception e){
            //捕获异常
            System.out.println("Catch");
        }finally {
            //无论如何都会执行
            System.out.println("Finally");
        }
        //由于异常被捕获,依旧会执行
        System.out.println("End");
    }

最后的结果

Try Before
Catch
Finally
End

 try中间加入return

@Test
    public void testTryCatch(){
        try {
            System.out.println("Try Before");
            System.out.println("Try After");
            //此处返回,但是finally仍会执行
            return;
        }catch (Exception e){
            //捕获异常
            System.out.println("Catch");
        }finally {
            //无论如何都会执行
            System.out.println("Finally");
        }
        //由于异常被捕获,依旧会执行
        System.out.println("End");
    }

finally仍会执行 说明finally是在return之前加载/try catch 外的语句不会执行 

Try Before
Try After
Finally

try中return,其中发生异常 

@Test
    public void testTryCatch(){
        try {
            System.out.println("Try Before");
            int a=10/0;
            System.out.println("Try After");
            //发生异常,return不会执行,因而会直接顺序执行
            return;
        }catch (Exception e){
            //捕获异常
            System.out.println("Catch");
        }finally {
            //无论如何都会执行
            System.out.println("Finally");
        }
        //由于异常被捕获,依旧会执行
        System.out.println("End");
    }
Try Before
Catch
Finally
End

总结如下

  1. 无论是否发生异常,finally都会执行;而try catch之后的语句也会顺序执行
  2. 如果希望中止在try catch,应在finally中添加return语句;此外释放资源的一些操作,如socket关闭等均放在finally中处理

猜你喜欢

转载自blog.csdn.net/evanxuhe/article/details/81195399