假设我们有这段代码:
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();被称为?
答案 0 :(得分:0)
断言可以打开和关闭以运行程序,默认情况下是关闭的。如果它们被打开并且它们的条件被触发,则JVM会抛出AssertionError
。从您的评论中看来,您似乎没有启用断言。
因为断言可以消失,所以你不应该在断言上建立应用程序逻辑:如果你想在某个意外情况下引发错误,抛出异常。