Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

assert 是什么,什么时候使用?

查看完整题解

参考回答

直接回答

assert 是 Java 的断言语句,用来检查程序员认为在该位置应当成立的内部条件。断言启用时,条件为 false 会抛 AssertionError;通常默认未启用,需要通过 -ea 等启动选项打开。它不适合替代业务校验或公共接口参数检查。

讲清原理

断言更像开发阶段的“内部假设检查”。例如算法执行到某一步时,下标必须处于已知范围。如果用户输入是否合法、权限是否足够会影响业务正确性,就必须使用始终执行的显式判断,不能依赖可关闭的断言。

断言表达式也不应承担必须发生的副作用。否则关闭断言后,计算、赋值或计数动作可能根本不发生,程序行为就改变了。测试框架中的断言方法与语言关键字 assert 也不是同一套启用机制。

例子与易错点

int size = -1;
assert size >= 0 : "内部长度不应为负";
System.out.println("继续执行");

普通启动可能打印“继续执行”;使用 java -ea ... 则抛 AssertionError。验证用户输入时,应改为明确抛 IllegalArgumentException 或返回可理解的错误信息。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。