2

アサーションを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();
    }
4

3 に答える 3

5

アサーションは、次とほぼ同等です。

if (!condition) {
    throw new AssertionError();
}
于 2011-12-11T17:30:15.223 に答える
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();

Exceptionan を投げることと anをError投げるExceptionことには違いがあることに注意してくださいError。たとえばMyValidationError、失敗したチェックが回復不能である場合は、 を定義して使用することを検討できます。

于 2011-12-11T17:30:41.267 に答える
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();
    }
于 2011-12-11T17:32:37.103 に答える