我已经处理了一些实例,在这些实例中我知道周围的代码将捕获特定的异常,因此我将抛出/重新抛出异常。但是,是否有任何时候您想抛出异常而又不会被捕获?

或者至少没有捕获到异常?

除非异常处理得当,否则异常会立即停止应用程序?因此,我想问的是您是否会故意让应用程序死掉?

最佳答案

如果您的应用程序主要是要供其他客户端使用,并且不是独立的,则通常会在出现以下情况引发异常时有意义:您不知道如何(或不想)处理,并且没有任何明智的选择从中恢复的方法。客户应该能够决定他们如何处理可能引发的异常。

另一方面,如果您的应用程序是端点,则抛出异常本质上将成为一种通知机制,以提醒人们某些问题出了错。在这种情况下,您需要考虑以下几点:


继续运行应用程序有多重要?这个错误真的不可恢复吗?抛出异常并终止程序不是您想要在航天飞机上进行的事情。
您是否使用异常作为真实日志记录的代理?几乎没有理由这样做。考虑使用真正的日志记录机制。捕获异常,让记录器确定发生了什么。
您想通过自己抛出异常来传达什么?问问自己,抛出新异常的价值是什么,并仔细考虑是否有更好的方法来做自己想要的事情。
不捕获异常可能会使资源处于不良状态。如果您不优雅地退出,通常不会为您清理一切。确保您了解自己在做什么(如果需要这样做),并且,如果您不想抓住它,请至少考虑使用try-finally块,以便进行一些整理。

08-05 07:45
查看更多