Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1996061
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 18:27:46

    一、内层方法抛出异常,外层方法捕捉并处理异常:

    public void methodA (){

    try{

    // 调用methodB

    methodB();

    }

    catch(ExceptionType et){

    // 相应处理措施

    }

    }

    public void methodB throws ExceptionType{

    if (condition is true)

    {

    // 相应处理措施

    }

    else

    {

    throw new ExceptionType(argument);

    }

    }

    在这个例子中,方法B的头部中声明了该方法会抛出一个类型为ExceptionType的异常,在方法体中使用throw子句抛出了一个异常,那么该异常被谁捕捉到呢,答案是方法A.因为异常抛出后,JVM会顺着该方法的调用栈一层一层的往上找。因为方法A中有一个catch(ExceptionType et),所以被抛出的异常会被捕捉到并处理。

    二、方法中自己捕捉,处理异常:

    public methodA() {

    try

    {

    // 可能产生异常的语句

    }

    catch (ExceptionType et)

    {

    // 相应的处理

    }

    }

    在这个例子中,方法A使用了try-catch语句块,那么意味着在方法中所产生的ExceptionType类型的异常都会被捕捉到并在方法内处理。

    三、内层方法抛出一个异常,但本身又有try-catch

    public methodB() throws ExceptionType{

    try

    {

    // 可能产生异常的语句

    }

    catch (AnotherExceptionType aet)

    {

    // 相应处理措施

    }

    }

    在这个例子中有两种异常处理情况,抛出异常和捕捉异常,如果在try语句块中产生ExceptionType类型的异常的话,会被抛出。如果产生AnotherExceptionType类型的话,则不会被抛出,因为在方法B的头部中并没有声明会抛出该异常。

    四、内层方法抛出一个异常,但本身有try-finally

    public methodB() throws ExceptionType{

    try

    {

    // 可能产生异常的语句

    }

    finally

    {

    // 一定要执行的语句

    }

    }

[1]  

【责编:Ken】

--------------------next---------------------

阅读(250) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~