之前接触就有困扰,当时没有找到答案。最近忽然又想起这个问题,为什么我们自定义异常都继承Exception类。而exception能捕获的异常,他的子类却捕获不了?
再如:数据越界异常,空指针异常,不能捕获Exception能捕获的异常。

解决方案 »

  1.   

    这都是JAVA语言的基础知识啊。:(
    有些直接就是语言的规定。比如,你如果从String类派生一个类做为异常使用的话,程序编译都通不过。
    实际上,所以被抛出的东西,都必需实现Throwable。
      

  2.   

    王八的臀部——规定,是啊,父类当然不子类的作用范围要大了,是吧,就像ArrayList要造型成List接口,ArrayList不能实现一些功能,造型成他父接口LIst就能实现那些List才有的功能。
      

  3.   

    Exception 是父类,数据越界异常,空指针异常 是Exception的子类
      

  4.   

    继承要遵循is a原则,就是子类 is a 父类.拿Exception举例子,
                      Exception
                       |
                   ----------------
                   |          |
        RuntimeException      YourException
    RuntimeException一定是一个异常,所以如果出了RuntimeException,Exception肯定可以捕获到,
    而YourException和RuntimeException则是兄弟关系,他两个没有任何继承关系,所有RuntimeException
    is not a YourException.