Как заменить assert? - PullRequest
       13

Как заменить assert?

1 голос
/ 11 декабря 2011

У меня есть другой код программиста, как я могу вставить вместо этого «если», вместо утверждения?Или, может быть, есть третий, лучший способ.

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 ]

4 голосов
/ 11 декабря 2011

Утверждение примерно эквивалентно:

if (!condition) {
    throw new AssertionError();
}
2 голосов
/ 11 декабря 2011
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 голосов
/ 11 декабря 2011

Замена этих утверждений будет иметь вид следующей проверки:

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 s указывают на ситуацию, из которой вы не можете прийти в себя. Например, вы можете рассмотреть возможность определения и использования MyValidationError, если неудачная проверка необратима.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...