我有其他程序员代码,如何在这部分中加上“if's”而不是断言?或许,还有第三种更好的方式。
public Wezel<Wartosc,Indeks> getWujek()
{
assert rodzic != null; // Root node has no uncle
assert rodzic.rodzic != null; // Children of root have no uncle
return rodzic.getBrat();
}
答案 0 :(得分:4)
断言大致相当于:
if (!condition) {
throw new AssertionError();
}
答案 1 :(得分:2)
替换这些断言将采用以下验证的形式:
if (rodzic == null)
throw new MyValidationException("rodzic cannot be null");
if (rodzic.rodzic == null)
throw new MyValidationException("rodzic.rodzic cannot be null");
return rodzic.getBrat();
请注意,抛出Exception
和Error
- Exception
之间的区别是要抓住并进一步处理,而Error
表示情况你无法恢复。例如,如果失败的检查无法恢复,您可以考虑定义并使用MyValidationError
。
答案 2 :(得分:2)
public Wezel<Wartosc,Indeks> getWujek()
{
if(rodzic == null) { // Root node has no uncle
throw new Exception("Root node has no uncle");
}
if(rodzic.rodzic == null) {
throw new Exception("Children of root have no uncle");
}
return rodzic.getBrat();
}