Throwable分Exception和Error,应用一般应该捕捉Exception。因为如果Error被抛出,证明是JVM或系统的致命错误,不是“异常”。至于throw new Throwable()如果没有很好的解释,写这句话的人一定是变态……

解决方案 »

  1.   

    所有异常类型都是内置类Throwable的子类。因此,Throwable在异常类层次结构的顶层。紧接着Throwable下面的是两个把异常分成两个不同分支的子类。一个分支是Exception。该类用于用户程序可能捕捉的异常情况。它也是你可以用来创建你自己用户异常类型子类的类。另一类分支由Error作为顶层,Error定义了在通常环境下不希望被程序捕获的异常。Error类型的异常用于Java运行时系统来显示与运行时系统本身有关的错误。但是它们通常是灾难性的致命错误,不是你的程序可以控制的。
      

  2.   

    同意灯泡关于变态的品德评语,在我的实践中,如果可以用RuntimeException来包装一个非RuntimeException可以让程序变得非常好写。事实上,我们有自己写的DException extends RuntimeException which可以包装一个Throwable instance.
      

  3.   

    同意 leonzhao(灯泡) 的评论