可以关闭,而且默认就是关闭的。
在 Java 里,assert 关键字(断言)是可选的运行时功能,是否生效由 JVM 参数控制。
assert x > 0;
如果不显式开启,这行代码在运行时不会执行任何检查,相当于不存在。
java -ea MyApp
或
java -enableassertions MyApp
java -ea:com.example... MyApp
java -ea:com.example.MyClass MyApp
java -da MyApp
或
java -disableassertions MyApp
java -da:com.example... MyApp
| 对比项 | assert | if + throw |
|---|---|---|
| 是否默认启用 | ❌ 否 | ✅ 是 |
| 是否适合生产环境 | ❌ 不适合 | ✅ 适合 |
| 抛出类型 | AssertionError |
自定义异常 |
| 用途 | 内部逻辑校验 | 用户输入 / 业务校验 |
❌ 不要用 assert 做参数校验或业务校验
✅ 只用于**“永远不应该发生”的内部假设**
public void process(int x) {
assert x > 0 : "x must be positive";
// 如果断言关闭,这里不会检查
}
如果 JVM 没加 -ea,即使 x <= 0,程序也不会报错。
✅ Java 的 assert 断言是可以关闭的
✅ 默认就是关闭的
✅ 通过 -ea / -da 控制是否启用
如果你愿意,我也可以告诉你 为什么实际项目中很少用 assert、以及 更好的替代方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。