我是靠谱客的博主 迷路柚子,这篇文章主要介绍【Java 教程】JAVA的断言 - Assert,现在分享给大家,希望可以做个参考。

简介

断言是使用Java中的 assert 语句实现的。 在执行断言时,它被认为是正确的。 如果失败,JVM会抛出一个名为 AssertionError 的错误。 它主要用于开发过程中的测试目的。
assert 语句与布尔表达式一起使用,可以用两种不同的方式编写:

复制代码
1
2
3
assert expression; assert expression : errorMessage;

示例

复制代码
1
2
3
4
5
6
7
8
9
public class AssertTest { public static void main(String[] args) { int value = 15; assert value >= 20 : "Underweight"; System.out.println("value is " + value); } }

输出:

复制代码
1
2
value is 15

可以看到 assert 语句并没有起作用,这是因为Java在执行程序的时候默认是不启动断言检查的,即所有的断言语句都将被忽略。

如果要开启断言检查,则需要使用 -enableassertions 或 -ea JVM参数来开启;如果要手动忽略断言检查,则可以通过使用 -disableassertions 或 -da JVM参数来忽略断言语句。

执行命令 java -ea AssertTest 开启断言后的输出:

复制代码
1
2
3
Exception in thread "main" java.lang.AssertionError: Underweight at AssertTest.main(AssertTest.java:11)

使用第一种无错误信息提示的语法编写:

复制代码
1
2
3
4
5
6
7
8
9
public class AssertTest { public static void main(String[] args) { int value = 15; assert value >= 20; System.out.println("value is " + value); } }

输出:

复制代码
1
2
3
Exception in thread "main" java.lang.AssertionError at AssertTest.main(AssertTest.java:11)

可以看到这里仅是抛出了 AssertionError,没有任何错误信息提示

为什么使用断言

确保看起来无法到达的代码实际上是无法到达的
确保假设是正确的
确保 switch case 语句的 default 分支无法到达
检查对象的状态
在方法的开始检验
在方法调用后检验

注意事项

断言主要用于检查逻辑上不可能的情况。例如,它们可用于检查代码在开始运行之前期望的状态或在代码结束运行之后的状态。与普通的异常/错误处理不同,断言通常在运行时被禁用。

在哪里使用断言

私有方法的参数。私有参数仅由开发人员的代码提供,开发人员可能希望检查其关于参数的假设
分支条件,例如 switch case 语句
方法开头的条件

哪里不使用断言

断言不应用于替换错误/异常消息
断言不应用于 public 方法中的参数,因为它们可能由用户提供
断言不应在命令行参数上使用

小结

断言是一种调试方式,断言失败会抛出 AssertionError,只能在开发和测试阶段启用断言
对可恢复的错误不能使用断言,而应该抛出异常
JAVA中断言很少被使用,更好的方法是编写单元测试

作者:河西
链接:https://juejin.im/post/5e0eaa0de51d4540e47ca159

服务推荐

  • 蜻蜓代理
  • ip代理服务器
  • 企业级代理ip
  • 微信域名检测
  • 微信域名拦截检测

最后

以上就是迷路柚子最近收集整理的关于【Java 教程】JAVA的断言 - Assert的全部内容,更多相关【Java内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部