Кто кидает AssertionError в JAVA? JVM или разработчиком / программистом API? - PullRequest
0 голосов
/ 27 мая 2020

Я изучаю обработку исключений в JAVA, я обнаружил, что исключения / ошибки также могут быть классифицированы в зависимости от того, кто их выбрасывает или вызывает. *

Исключения, поднятые разработчиком / программистом API

Мой вопрос в том, кто несет ответственность за повышение AssertionError?

1 Ответ

3 голосов
/ 27 мая 2020

Ответственность лежит на программисте, независимо от того, используют ли они, например,

throw new AssertionError("unreachable code");

или

assert condition;

Обратите внимание, что оператор assert называется так называемым «синтаксисом c. сахар ».

Когда вы пишете

class ClassWithAssert {
    public ClassWithAssert() {
        assert toString() != null;
    }
}

, он компилируется в эквивалент

class ClassWithAssert {
    static final boolean $assertionsDisabled
        = !ClassWithAssert.class.desiredAssertionStatus();
    public ClassWithAssert() {
        if(!$assertionsDisabled && toString() == null)
            throw new AssertionError();
    }
}

Таким образом, неявное бросание не отличается от явного, технически .

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