在 Java 中,assert 断言失败的行为取决于是否启用了断言机制,以及断言表达式的结果。
assert condition;
// 或
assert condition : "错误信息";
java MyClass
assert 语句被忽略false,程序也不会报错、不会停止⚠️ 这是很多初学者“断言没反应”的原因
java -ea MyClass
# 或
java -enableassertions MyClass
当 assert 的条件为 false 时:
AssertionErrorassert x > 0 : "x 必须大于 0";
异常信息会包含 "x 必须大于 0"示例:
assert false : "出错了";
输出:
Exception in thread "main" java.lang.AssertionError: 出错了
Error(不是 Exception)try {
assert false;
} catch (AssertionError e) {
// 不推荐这样做
}
| 场景 | 是否适合用 assert |
|---|---|
| 参数合法性(对外 API) | ❌ 用异常 |
| 内部逻辑假设 | ✅ 用 assert |
| 用户输入错误 | ❌ 用异常 |
| 调试阶段假设 | ✅ 用 assert |
例如:
// 不推荐
assert age > 0;
// 推荐
if (age <= 0) throw new IllegalArgumentException("年龄非法");
java -ea Main
java -ea:com.example... Main
java -da Main
Java 中断言失败会抛出
AssertionError并终止程序,但前提是你用-ea启用了断言;否则断言等于不存在。
如果你愿意,我也可以讲:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。