在尝试捕获中使用可抛出和异常之间的区别

2022-08-31 04:37:20

有时,我看到

try {

} catch(Throwable e) {

}

有时

try {

} catch(Exception e) {

}

有什么区别?


答案 1

通过捕获它包括子类的东西。您通常不应该这样做,除非在线程的最高“全部捕获”级别,您希望记录或以其他方式处理可能出错的所有内容。这在框架类型的应用程序(例如应用程序服务器或测试框架)中更为典型,它可以运行未知代码,并且应该尽可能地不受该代码的任何错误的影响。ThrowableError


答案 2

第一个捕获 Throwable 的所有子类(这包括 ExceptionError),第二个捕获 Exception 的所有子类。

Error以编程方式以任何方式都无法恢复,并且通常不会被捕获,除非用于日志记录目的(再次传递它)。 以编程方式可恢复。它的子类指示编程错误,通常也不会被捕获。ExceptionRuntimeException