你能解释一下这些例外吗?

时间:2014-01-15 18:59:48

标签: java exception

我知道要问这个问题有点苛刻,但我正在学习考试,并没有真正了解这个例外是如何运作的。

class Axception extends Exception {}; 
class Bxception extends Axception {}; 

public class Exceptions { 
  public static void main(String [] a) throws Exception { 
        System.out.println("A");    
   try { 
    System.out.println("B"); 
    try { 
     System.out.println("C"); 
     throw new Exception(); 
    } catch (Axception a1) { 
     System.out.println("D"); 
     throw a1; 
    } 
    finally{ 
     System.out.println("E");
 
    } 
    } catch (Bxception e)  { 
    System.out.println("F"); 
    } catch (Exception e)  { 
    System.out.println("G"); 
    }   
    System.out.println("H");  
  } 
} 

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

输出应为A B C E G H

应该很容易理解为什么命令是A B C.之后你抛出一个异常对象。 但是因为你试图在子类对象Axception a1中捕获它,所以它不会被捕获。因此它不会打印D也不会抛出a1。然后最终将被处理,无论如何。因此,E。

再次尝试在子类对象中捕获Exception对象,即Bxception e,它不会被捕获。因此它不会打印F.

接下来,您尝试在Exception对象中捕获它,因此它将被捕获并将打印G。

由于现在发现异常,方法应该很高兴去打印H.

因此A B C E G H。

希望现在很清楚。