我是java中的断言概念的新手.我在哪里读过关于java中的断言概念,总是说,如果我们使用assert expression1:expression2,它将使用默认构造函数或AssertionError类中的七个构造函数之一,以防它失败. 但我怀疑的是,当assert语句失败时,谁实际上抛出了这个AssertionError错误?编译器是否会添加" throw new AssertionError(---) ",否则JVM将检查表达式并抛出AssertionError(如ArithmeticException,NullPointerException等...)?
该断言提议解释它:
断言语句[仅]是这个if语句的语法糖:
if ($assertionsEnabled && !(Expression1)) throw new AssertionError(Expression2);
$assertionsEnabled
是一个合成的布尔字段,也可以由编译器添加.