【问题标题】:under which conditions can the error escape try-catch with Exception class?在什么情况下错误可以通过 Exception 类逃脱 try-catch?
【发布时间】:2024-01-22 19:07:01
【问题描述】:

这个 try-catch 块不会捕捉到哪些错误情况?

    try
    {
       //some codes
    }
    catch (Exception e)
    {
       //log error
    }

背景: 我实现了一个运行外部可执行文件的服务器(使用ProcessBuilder)。所以基本上,我不希望 try 块中的错误杀死服务器。在这里捕获Throwable 可能是更好的选择,但我想知道还有什么可以逃脱Exception 或更强大的替代方案(如果有的话)。谢谢!

【问题讨论】:

标签: java exception try-catch


【解决方案1】:

任何不是Exception 的东西。

查看 https://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html 以了解 Java 自己的异常(您可以通过扩展 Exception 类来创建自己的异常)。

还要注意ErrorException 之间的区别。 https://docs.oracle.com/javase/7/docs/api/java/lang/Error.html

另外,您打算如何从存在的所有异常中恢复? 如果抛出异常,则说明您已达到某种严重错误的状态。不知道什么是错误的,实际上很难恢复,从而使您的服务器处于非功能状态。因此,虽然您的服务器不会因为您看到异常而死(并且可以追溯发生了什么问题),但无论如何您很可能处于非功能状态。

如果您还没有这样做,请查看https://docs.oracle.com/javase/tutorial/essential/exceptions/ 处理异常。或者阅读它以进行复习。

【讨论】: