Java不变异常

时间:2013-07-03 21:58:52

标签: java exception invariants sanity-check

我有一个项目,其中某些数据具有不可使用语言结构强制执行的不变量,但我打算编写我的代码以便维护它们。如果它们因某种原因被破坏,则意味着我的代码有问题。我有一些健全性检查代码可以发现这些不变量是否已被破坏,但我不确定响应这种情况的规范Java方法是什么 - 我应该抛出一些标准异常吗?使用断言?

请注意,这是某个值在某些时候设置错误的问题。在完整性检查时,错误本身不会发生,而是在过去发生,并且完整性检查刚刚发现它(也就是说,健全性检查本身正在运行,它是&并不坏) #39;检查失败,这很糟糕。)

谢谢!

2 个答案:

答案 0 :(得分:1)

抛出IllegalStateException。它专门用于这样的目的。

答案 1 :(得分:1)

决定你的应用程序如何对破坏的不变量作出反应将是明智的第一步

如果一个破坏的不变量是不可恢复的并且基本上意味着一个代码的错误,我第二个关于IllegalStateException.html的答案(你可能想为调试目的添加一些有用的上下文,例如破坏的不变量中的变量) - 这样的未经检查异常将停止正在运行的线程

如果你可以从破坏的不变量中恢复(通过用合理的默认值替换一些参数,再给它一次尝试) - 你可能想要抛出一个已检查的异常并在其中一个上层捕获它并执行计划B