Ответственность лежит на программисте, независимо от того, используют ли они, например,
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();
}
}
Таким образом, неявное бросание не отличается от явного, технически .