大家好,我是编程小6,很高兴遇见你,有问题可以及时留言哦。
断言是使用Java中的 assert
语句实现的。 在执行断言时,它被认为是正确的。 如果失败,JVM会抛出一个名为 AssertionError
的错误。 它主要用于开发过程中的测试目的。
assert
语句与布尔表达式一起使用,可以用两种不同的方式编写:
assert expression;
assert expression : errorMessage;
public class AssertTest {
public static void main(String[] args) {
int value = 15;
assert value >= 20 : "Underweight";
System.out.println("value is " + value);
}
}
输出:
value is 15
可以看到 assert
语句并没有起作用,这是因为Java在执行程序的时候默认是不启动断言检查的,即所有的断言语句都将被忽略。
如果要开启断言检查,则需要使用 -enableassertions
或 -ea
JVM参数来开启;如果要手动忽略断言检查,则可以通过使用 -disableassertions
或 -da
JVM参数来忽略断言语句。
执行命令 java -ea AssertTest
开启断言后的输出:
Exception in thread "main" java.lang.AssertionError: Underweight
at AssertTest.main(AssertTest.java:11)
使用第一种无错误信息提示的语法编写:
public class AssertTest {
public static void main(String[] args) {
int value = 15;
assert value >= 20;
System.out.println("value is " + value);
}
}
输出:
Exception in thread "main" java.lang.AssertionError
at AssertTest.main(AssertTest.java:11)
可以看到这里仅是抛出了 AssertionError
,没有任何错误信息提示
switch case
语句的 default
分支无法到达断言主要用于检查逻辑上不可能的情况。例如,它们可用于检查代码在开始运行之前期望的状态或在代码结束运行之后的状态。与普通的异常/错误处理不同,断言通常在运行时被禁用。
在哪里使用断言
switch case
语句哪里不使用断言
public
方法中的参数,因为它们可能由用户提供AssertionError
,只能在开发和测试阶段启用断言
参考资料:
GeeksforGeeks - Assertions in Java
廖雪峰JAVA教程 - 使用断言