有时,我看到 try { } catch(Throwable e) { } 而有时 try { } catch(Exception e) { } 有什么区别? 原文由 jax 发布,翻译遵循 CC BY-SA 4.0 许可协议
通过捕捉 Throwable 它包括子类 Error 的东西。您通常不应该这样做,除非在您想要记录或以其他方式绝对处理所有可能出错的线程的最高“catch all”级别。它在框架类型的应用程序(例如应用程序服务器或测试框架)中更为典型,它可以运行未知代码,并且尽可能不受该代码出错的 任何 影响。 原文由 Yishai 发布,翻译遵循 CC BY-SA 3.0 许可协议
The first one catches all subclasses of Throwable (this includes Exception and Error ), the second one catches all subclasses of Exception . Error 以编程方式无法以任何方式恢复并且通常不会被捕获,除非用于记录目的(再次通过它)。 Exception 可以编程方式恢复。它的子类 RuntimeException 表示编程错误,通常也不会被捕获。 原文由 BalusC 发布,翻译遵循 CC BY-SA 4.0 许可协议
通过捕捉
Throwable
它包括子类Error
的东西。您通常不应该这样做,除非在您想要记录或以其他方式绝对处理所有可能出错的线程的最高“catch all”级别。它在框架类型的应用程序(例如应用程序服务器或测试框架)中更为典型,它可以运行未知代码,并且尽可能不受该代码出错的 任何 影响。