getter方法中的Java断言

时间:2014-11-12 14:37:48

标签: java assertions

假设我们有这段代码:

Owner owner;
public Owner getOwner(int id)
{
    if (owner == null)
        owner = Owners.getOwner(id);
    assert owner != null;
    return owner;
}

如果Owners.getOwner(id)返回null,会发生什么?如果在返回之前添加了断言,那么方法会死吗?或者它仍将返回null?

如果将getOwner(id)声明为null,则仍会抛出NPE,如果getOwner(id).doSomething();被称为?

1 个答案:

答案 0 :(得分:0)

断言可以打开和关闭以运行程序,默认情况下是关闭的。如果它们被打开并且它们的条件被触发,则JVM会抛出AssertionError。从您的评论中看来,您似乎没有启用断言。

因为断言可以消失,所以你不应该在断言上建立应用程序逻辑:如果你想在某个意外情况下引发错误,抛出异常。