如何替换断言?

时间:2011-12-11 17:27:19

标签: java assertion

我有其他程序员代码,如何在这部分中加上“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();
    }

3 个答案:

答案 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();

请注意,抛出ExceptionError - 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();
    }