当前位置:  开发笔记 > 编程语言 > 正文

当JVM在java程序中遇到断言语句时,它在内部做什么?

如何解决《当JVM在java程序中遇到断言语句时,它在内部做什么?》经验,为你挑选了1个好方法。

我是java中的断言概念的新手.我在哪里读过关于java中的断言概念,总是说,如果我们使用assert expression1:expression2,它将使用默认构造函数或AssertionError类中的七个构造函数之一,以防它失败. 但我怀疑的是,当assert语句失败时,谁实际上抛出了这个AssertionError错误?编译器是否会添加" throw new AssertionError(---) ",否则JVM将检查表达式并抛出AssertionError(如ArithmeticException,NullPointerException等...)?



1> kapex..:

该断言提议解释它:

断言语句[仅]是这个if语句的语法糖:

if ($assertionsEnabled && !(Expression1))
    throw new AssertionError(Expression2);

$assertionsEnabled 是一个合成的布尔字段,也可以由编译器添加.


这意味着JVM实际上并没有做任何特别的事情; 这是一个编译器功能.
推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有