谁在 JAVA 中抛出 AssertionError? JVM 还是 API developer/Programmer?
Who throws AssertionError in JAVA? JVM or by API developer/Programmer?
我在JAVA学习了异常处理,我发现exceptions/errors也可以根据谁抛出或引发来分类
JVM 引发的异常
APIdeveloper/programmer
引发的异常
我的问题是谁负责筹集AssertionError
?
责任在于程序员,无论他们是否使用,例如
throw new AssertionError("unreachable code");
或
assert condition;
请注意,assert
语句是所谓的“语法糖”。
写的时候
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();
}
}
所以从技术上讲,隐式抛出与显式抛出没有什么不同。
我在JAVA学习了异常处理,我发现exceptions/errors也可以根据谁抛出或引发来分类
JVM 引发的异常
APIdeveloper/programmer
引发的异常
我的问题是谁负责筹集AssertionError
?
责任在于程序员,无论他们是否使用,例如
throw new AssertionError("unreachable code");
或
assert condition;
请注意,assert
语句是所谓的“语法糖”。
写的时候
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();
}
}
所以从技术上讲,隐式抛出与显式抛出没有什么不同。