您的位置:首页 > 其它

try、catch、finally的执行顺序

2012-09-25 16:59 267 查看
这个小程序的打印结果是什么? 还好我做对了, 不过借此也复习一下try、catch、finally的执行顺序

 

import java.io.IOException;

public class ExceptionTest {

        class MyException extends Exception{

        }

        String sf1() {

                int i = 0;

                try{

                        if(i==0)

                                throw new MyException();

                        System.out.println("IN");

                        return null;

                }catch(MyException e){

                        System.out.println("CATCH");

                }finally{

                        System.out.println("FINALLY");

                }

                System.out.println("OUT");

                return null;

        }

        public static void main(String[] args){

                new ExceptionTest().sf1();

        }

  执行结果是:

CATCH

FINALLY

OUT

概括成几个要点:

1. 在try代码块中如果发生错误,将抛出exception,停止执行try代码块中后面的代码,然后执行catch块的代码,之后执行finally块的代码,如果catch块和finally块的代码都没有return语句,那么将执行finally块后面的代码。

2. 如果try代码块中未发生异常,那么先执行完try代码块的所有代码,再执行finally块的代码,如果try代码块有return语句,那么在这之前先要执行finally代码块的代码, 如果try和finally都没有return语句,那么再执行finally块后面的代码。

3. 在一个方法中没有被捕获得异常总是会向上影响调用它的方法,这种影响会继续向上延伸到调用该方法的各级,直到它被捕获,或者到达最上层的main()方法。如果在main中还没有捕获异常,程序就会停止运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息