在java中扩展Throwable vs Exception

时间:2014-08-20 06:52:14

标签: java

在创建我自己的异常时,在决定要扩展哪个超类时,我需要考虑哪些好处?

每个人的首要任务是什么?

class MyException extends Exception 

VS

class MyException extends Throwable

3 个答案:

答案 0 :(得分:2)

第一个捕获Throwable的所有子类(包括Exception和Error),第二个捕获Exception Class的所有子类。

错误在编程上是不可恢复的,并且就捕获而言应该避免,除了日志记录之外,反过来应该再次抛出它。错误不应该被捕获,除非你正在尝试某种类型的东西"赶上所有"一个线程的水平。

异常以编程方式可恢复。它的子类RuntimeException表示编程错误,通常也不会被捕获。

答案 1 :(得分:0)

它必须从Exception扩展,Throwable必须仅针对Java虚拟机错误和严重操作系统错误实现,例如耗尽内存堆空间或系统块。

答案 2 :(得分:-1)

通过捕获Throwable,它包含了子类Error的内容。您通常不应该这样做,除非您想要记录或以其他方式处理可能出错的所有内容的线程的最高“catch all”级别。在框架类型应用程序(例如应用程序服务器或测试框架)中更常见的是,它可以运行未知代码,并且不应该尽可能地受到该代码出错的任何问题的影响。 见difference-between-using-throwable-and-exception-in-a-try-catch