getter方法中的Java断言
假设我们有以下代码:
Owner owner;
public Owner getOwner(int id)
{
if (owner == null)
owner = Owners.getOwner(id);
assert owner != null;
return owner;
}
如果业主不同意,会发生什么。getOwner(id)返回空值?如果在返回之前添加了断言,该方法会消亡还是仍然返回null
如果getOwner(id)被断言为null,那么如果getOwner(id)为空,则仍将抛出NPE。doSomething();叫什么名字
# 1 楼答案
断言可以打开和关闭以运行程序,默认情况下是关闭的。如果它们被打开并且它们的条件被触发,JVM将抛出一个
AssertionError
。从您的评论来看,您似乎没有启用断言因为断言可以消失,所以您不应该将应用程序逻辑建立在断言的基础上:如果您想在某种意外情况下引发错误,请抛出异常