我有一个项目,其中某些数据具有不能使用语言结构强制执行的不变量,但我打算编写我的代码以便维护它们。如果它们由于某种原因被破坏,则意味着我的代码有问题。我有一些健全性检查代码可以发现这些不变量是否已被破坏,但我不确定响应这种情况的规范 Java 方法是什么——我应该抛出一些标准异常吗?使用断言?
请注意,这是某个值设置不正确的问题。错误本身不是在健全性检查时发生的,而是在过去发生的,健全性检查现在才发现它(即,健全性检查本身正在运行并不坏,只是糟糕的是检查失败)。
谢谢!
我有一个项目,其中某些数据具有不能使用语言结构强制执行的不变量,但我打算编写我的代码以便维护它们。如果它们由于某种原因被破坏,则意味着我的代码有问题。我有一些健全性检查代码可以发现这些不变量是否已被破坏,但我不确定响应这种情况的规范 Java 方法是什么——我应该抛出一些标准异常吗?使用断言?
请注意,这是某个值设置不正确的问题。错误本身不是在健全性检查时发生的,而是在过去发生的,健全性检查现在才发现它(即,健全性检查本身正在运行并不坏,只是糟糕的是检查失败)。
谢谢!
扔一个IllegalStateException
. 它专门用于这样的目的。
决定您的应用程序如何对损坏的不变量做出反应将是明智的第一步
如果一个损坏的不变量是不可恢复的并且基本上意味着一个代码错误,我第二个关于IllegalStateException.html的答案(您可能想要添加一些有用的上下文以用于调试目的,例如损坏的不变量中的变量) - 这种未经检查的异常会停止运行线
如果您可以从损坏的不变量中恢复(通过用合理的默认值替换一些参数,再试一次) - 您可能想要抛出一个已检查的异常并在上层之一上捕获它并执行计划 B