Guava前提条件运行时异常处理



正如我所理解的,在更改一些对象状态之前,我们使用Guava预条件来快速失败(这是stackoverflow的一个很好的答案)。这很好。然而,它抛出了运行时异常,这不是应用程序用户最喜欢的异常(500个错误等等…)。所以我需要你在设计中给我一些帮助。

我有一个接口,它声明了许多方法。每个方法都有必须控制的参数(例如:不为null)。因此,在实现类中,我使用如下指令:

Preconditions.checkNotNull(fooObj);

但是,调用此API的程序可能会由于运行时异常而崩溃,在本例中为NullPointerException。

那么,如何处理这些未检查的异常呢?

谢谢。

--------编辑应用层:

  • 数据访问层

  • API声明交换DTO 的方法

  • 实现API并使用Guava 检查参数的过程

  • 取决于流程层的Web服务

前提条件失败意味着程序有错误。用户不应该遇到这些问题,除非他们在你的程序中发现了错误。

您的程序通常应该在出现错误时向用户显示某种错误消息,但更重要的是,您应该得到通知,以便首先修复错误。

您可以通过设计程序来处理它们,以确保它们永远不会发生。这些先决条件方法旨在检测错误并帮助找到根本原因,而不是验证用户输入。

如果您只定义API,而不是调用它的程序,那么您可以通过在文档中告诉人们有问题的参数不能为空来"处理"它,并将满足该要求的问题留给他们。

如果你也在编写一个调用程序,首先要确保这个异常永远不会发生。您也可以将调用放在try/catch块中以捕获NullPointerException,但捕获块的目的应该是更好地通知错误(例如,记录日志消息或触发警报)和触发情况,并可能更优雅地关闭或提供更用户友好的错误消息。尝试从失败中恢复应该非常小心,或者根本不应该这样做——如果发生这种失败,那么就出现了你没有预见到的问题,正确的恢复方式可能是不可预测的。

最新更新