谁在 JAVA 中抛出 AssertionError? JVM 还是 API developer/Programmer?

Who throws AssertionError in JAVA? JVM or by API developer/Programmer?

我在JAVA学习了异常处理,我发现exceptions/errors也可以根据谁抛出或引发来分类

  1. JVM 引发的异常

  2. APIdeveloper/programmer

  3. 引发的异常

我的问题是谁负责筹集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();
    }
}

所以从技术上讲,隐式抛出与显式抛出没有什么不同。