Java 断言
本文最后更新于:2024年3月18日 凌晨
Java 断言
- 断言(Assertion)是一种调试程序的方式,在Java中,使用
assert
关键字来实现断言。
- 断言在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,一般来说,断言用于保证程序最基本,关键的正确性,断言检查通常在开发和测试时开启,为了保证程序的执行效率,在软件发布后断言检查通常是关闭的,断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true,如果表达式的值为false,那么系统会报告一个AssertionError
- 注意:断言不应该以任何方式改变程序的状态,简单的说,如果希望在不满足某些条件时阻止代码的执行,就可以考虑用断言来阻止它。
语法
- 如果<boolean表达式>为true,则程序继续执行。
- 如果为false,则程序抛出
AssertionError
,并终止执行。
1
| assert <boolean表达式> : <错误信息表达式>
|
- 如果<boolean表达式>为true,则程序继续执行。
- 如果为false,则程序抛出
java.lang.AssertionError
,并输入<错误信息表达式>
实例
1 2 3 4 5
| public static void main(String[] args) { double x = Math.abs(-123.45); assert x >= 0; System.out.println(x); }
|
- 语句
assert x >= 0;
即为断言,断言条件x >= 0
预期为true
,如果计算结果为false
,则断言失败,抛出AssertionError
配置
- 要在运行时启用断言,可以在启动JVM时使用
-enableassertions
或者-ea
标记,要在运行时选择禁用断言,可以在启动JVM时使用-da
或者-disableassertions
标记,要在系统类中启用或禁用断言,可使用-esa
或-dsa
标记,还可以在包的基础上启用或者禁用断言。
默认执行程序,没有开启-ea开关
1 2 3 4
| $ java AssertFoo 断言1没有问题。 ----------------- 断言2没有问题。
|
开启-ea开关,执行程序
1 2 3 4 5
| $ java -ea AssertFoo 断言1没有问题。 ----------------- Exception in thread "main" java.lang.AssertionError:断言失败,此表达式的信息将会在抛出异常的时候输出! at AssertFoo.main(AssertFoo.java:10)
|