什么是 Assertion?
Assertion(断言) 是一种用于在程序运行时检查逻辑条件是否为真的调试机制。 如果断言的条件为假(false),程序通常会抛出错误并终止执行,帮助开发者快速定位问题。
断言常用于开发和测试阶段,确保代码满足预期的前提条件、后置条件或不变式。
为什么使用断言?
- 快速发现逻辑错误
- 文档化代码假设
- 提升代码可维护性
- 辅助单元测试
注意:断言不应替代正常的错误处理逻辑,也不应用于验证用户输入。
不同语言中的断言示例
Python
assert x > 0, "x 必须为正数"
Java
assert index >= 0 : "索引不能为负";
需启用:使用 java -ea 参数运行程序。
JavaScript(手动实现)
function assert(condition, message) {
if (!condition) {
throw new Error(message || "Assertion failed");
}
}
assert(user.age >= 18, "用户必须年满18岁");
最佳实践
- 仅用于内部逻辑检查,不用于处理外部输入
- 断言信息应清晰明确
- 生产环境中可关闭断言以提升性能(如 Java、C/C++)
- 避免在断言中包含副作用(如修改变量)