在 Java 中主动抛出 AssertionError 是好的做法吗?
在阅读 Joshua Bloch 的“Effective Java - Second Edition”时,我偶然发现了第 152 页上的以下代码:
double apply(double x, double y) {
switch(this) {
case PLUS: return x + y;
case MINUS: return x - y;
case TIMES: return x * y;
case DIVIDE: return x / y;
}
throw new AssertionError("Unknown op: " + this);
}
现在让我感到困惑的是,这是主动抛出的。这被认为是好的做法吗?根据我的理解,断言用于不与代码交错,这样当java编程在没有启用断言的情况下启动并且因此不执行断言语句时,行为不会改变。如果我在运行程序时甚至不启用断言时会得到一个,我会相当困惑。AssertionError
AssertionException
尽管我知道示例情况可能会经常发生,但您分析了几个不同的选项,如果它们都不是,则应抛出异常。
那么,在这里扔一个是好的做法,还是扔一个不同的更好?如果是这样,哪一个最适合?或?AssertionException
IllegalArgumentException
编辑澄清:我的问题不是关于我们是否应该在这里抛出一个,而是如果我们想抛出一个或一个,它应该是哪一个?主动投掷s是好的做法吗?文档说抛出以表明断言已失败,因此我感觉我们不应该主动抛出它。这是对的吗?Error
Exception
Error
AssertionError
第二次编辑:明确的问题:积极抛出一个,还是应该避免,即使这是可能的,也是好的做法?(我猜阅读文档是后者)AssertionError