如何替换断言?

问题描述 投票:2回答:3

我如何用if代替断言?示例:

public Wezel<Wartosc,Indeks> getWujek() 
    {
        assert rodzic != null; // Root node has no uncle
        assert rodzic.rodzic != null; // Children of root has no uncle
        return rodzic.getBrat();
    }
java assertion
3个回答
5
投票

一个断言大致相当于:

if (!condition) {
    throw new AssertionError();
}

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();
    }

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

© www.soinside.com 2019 - 2024. All rights reserved.