在 try catch 中使用 Throwable 和 Exception 的区别

新手上路,请多包涵

有时,我看到

try {

} catch(Throwable e) {

}

而有时

try {

} catch(Exception e) {

}

有什么区别?

原文由 jax 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

通过捕捉 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题