【问题标题】:Multiple exceptions [duplicate]多个例外[重复]
【发布时间】:2015-07-04 14:48:22
【问题描述】:

当我执行这段代码时,我得到caughtjava.lang.CloneNotSupportedException 作为输出!为什么NullPointerException 没有被抓到?

package arrays;

public class NestedTry {
    public static void main(String s[])
    {
        try{
            try{
                throw new NullPointerException();
            }
            finally{
                throw new CloneNotSupportedException();
            }
        }
        catch(Exception e)
        {
            System.out.println("caught"+e.toString());
            //which excpetion will be printed here?? :P
        }
    }
}

【问题讨论】:

    标签: java exception


    【解决方案1】:

    只是因为finally 块肯定会执行。

    try{
            throw new NullPointerException();
        }
        finally{
            throw new CloneNotSupportedException();
            }
    

    在上面的代码中,首先NullPointerException() 被抛出,但是对于这个tryfinally 块再次抛出CloneNotSupportedException();

    所以最终

    catch(Exception e)
     {
        System.out.println("caught"+e.toString());
        //which excpetion will be printed here?? :P
     }
    

    上面的catch 不是捕获NullPointerException,而是捕获finally 块的CloneNotSupportedException 并打印caughtjava.lang.CloneNotSupportedException

    【讨论】:

      猜你喜欢
      • 2010-10-08
      • 1970-01-01
      • 2013-11-10
      • 2012-12-29
      • 2012-06-21
      • 2021-12-31
      • 2015-06-18
      • 2021-11-02
      • 1970-01-01
      相关资源
      最近更新 更多