Java 中的 assert 关键字
在 Java 中,你可以使用 assert
关键字来启用断言。此函数用于测试我们对程序的假设。我们可以通过两种方式在 Java 中使用断言,我们将在本文中解决这些问题。
在 Java 中使用 assert
作为条件
断言是检测和纠正程序错误的最快捷、最简单的方法。断言在执行时被假定为真。否则,如果它是假的,它会抛出一个断言错误。
这里,assert
条件是一个布尔表达式。
public class JavaAssertCheck {
public static void main (String args[]){
String[] names = {"John", "Mary", "David"};
assert names.length == 2;
System.out.println("There are "+names.length + " names in an array");
}
}
输出:
There are 3 names in an array
断言被禁用;因此,该程序将编译并运行而不会显示任何错误。但是如果断言被启用并且条件为假,JVM 会立即抛出一个 AssertionError
并停止程序。
Exception in thread "main" java.lang.AssertionError
at JavaAssertCheck.main(JavaAssertCheck.java:5)
在 Java 中使用 assert condition : expression
在这种断言格式中,如果条件被评估为假,则表达式被传递给 AssertionError
的构造函数。如果断言被启用并且如下所示的假设为假,则显示带有作为详细消息的传递表达式的 AssertionError
。
此消息有助于正确识别错误并修复错误。
public class JavaAssertCheck {
public static void main (String args[]){
String[] names = {"John", "Mary", "David"};
assert names.length == 2 : "The assertion condition is false.";
System.out.println("There are "+names.length + " names in an array");
}
}
输出:
Exception in thread "main" java.lang.AssertionError: The assertion condition is false.
at JavaAssertCheck.main(JavaAssertCheck.java:5)
在这里,它显示了我们可以在 Java 中使用断言概念的某些条件。
验证代码的不可达部分是否实际上是不可达的
public void unReachableCode(){
System.out.println("Unreachable Code");
return;
assert true;
}
如果你在任何你认为不应到达流的位置进行假设,则此函数将在删除无法到达的语句时提示错误。
在内部不变量的情况下
在断言可用之前,许多程序员使用注释来记录他们对程序的假设。如下面的多路 if 语句所示,我们可能想写一些东西来解释我们对 else 情况的假设。
public class JavaAssertCheck {
public static void main (String args[]){
int n = 37;
if(n % 3 == 0) System.out.println("n % 3 == 0");
else if (n % 3 == 1) System.out.println("n % 3 == 1");
else assert n % 3 == 2 : "Assumption is false. "+n;
}
}
不应该在公共方法中使用断言来检查传递的参数,因为用户可以自己提供这些参数;因此,它可能会失败并导致 AsssertionError
。不要使用断言来管理你的应用程序正常工作所需的任务。一个例子是从列表中删除空元素。
通常,断言中包含的表达式应该没有副作用。
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn