在 Java 中,assert 断言是可以被关闭的,而且默认就是关闭的。
Java 的 assert 关键字在 运行时默认是不启用的。
也就是说,如果你写了:
assert x > 0 : "x must be positive";
但没有开启断言,这行代码相当于什么都不做,不会抛异常。
需要通过 JVM 参数开启:
java -ea MyProgram
# 或
java -enableassertions MyProgram
只对某些包/类开启:
java -ea:com.example... MyProgram
显式关闭(即使之前开启过):
java -da MyProgram
# 或
java -disableassertions MyProgram
对特定包关闭:
java -da:com.example... MyProgram
❌ 以为 assert 一定会被执行
✅ 只有在 -ea 开启时才生效
❌ 用 assert 做业务校验
✅ assert 只适合内部不变量检查,不适合参数校验(因为可能关掉)
如果你希望“一定执行”,用异常:
if (x <= 0) {
throw new IllegalArgumentException("x must be positive");
}
✅ Java 的 assert 可以关,而且默认就是关的
✅ 通过 -ea / -da 控制
❌ 不能运行时动态开关
如果你愿意,我也可以讲 assert 在单元测试 / 生产环境的最佳实践。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。