温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用Java Assert断言

发布时间:2026-07-17 07:27:32 来源:亿速云 阅读:104 作者:小樊 栏目:编程语言

在 Java 中,断言(Assert)主要用于开发和测试阶段,用来检查程序中的“不可能为假”的条件。如果断言失败,会抛出 AssertionError。

下面分几种常见用法说明。


一、使用 Java 内置 assert 关键字

1️⃣ 基本语法

assert condition;

或带错误信息:

assert condition : "错误信息";

2️⃣ 示例

public class AssertDemo {
    public static void main(String[] args) {
        int a = 10;
        assert a > 0 : "a 必须大于 0";
        System.out.println("a = " + a);
    }
}

如果 a <= 0,程序会抛出:

Exception in thread "main" java.lang.AssertionError: a 必须大于 0

二、⚠️ 断言默认是关闭的(非常重要)

Java 的断言默认不启用,即使写了 assert 也不会生效。

✅ 启用断言方式

1️⃣ 命令行运行

java -ea AssertDemo

或启用某个包:

java -ea:com.example... AssertDemo

2️⃣ IDE 中启用(以 IntelliJ IDEA 为例)

  • Run → Edit Configurations
  • VM options 中添加:
-ea

三、assert 的使用场景(✅推荐 / ❌不推荐)

✅ 适合使用 assert 的情况

  • 检查内部逻辑错误
  • 判断“按理说不可能发生”的情况
  • 开发、调试阶段
assert list != null;
assert index >= 0 && index < list.size();

❌ 不适合使用 assert 的情况

  • 参数校验(用户输入)
  • 生产环境必须执行的检查
  • 替代异常

❌ 错误示例:

public void setAge(int age) {
    assert age > 0; // 不推荐
}

✅ 正确做法:

public void setAge(int age) {
    if (age <= 0) {
        throw new IllegalArgumentException("年龄必须大于 0");
    }
}

四、assert vs 异常(重点区别)

对比项 assert 异常
是否默认启用 ❌ 否 ✅ 是
是否用于生产 ❌ 不推荐 ✅ 推荐
失败结果 AssertionError Exception
使用目的 程序内部逻辑保证 业务/参数校验

五、JUnit 中的“断言”(测试常用)

如果你是在写单元测试,一般不用 assert,而是用 JUnit 断言。

JUnit 5 示例

import static org.junit.jupiter.api.Assertions.*;

@Test
void testAdd() {
    assertEquals(3, 1 + 2);
    assertTrue(1 > 0);
    assertNotNull(new Object());
}

✅ 这是最常用、最推荐的“断言”方式。


六、总结一句话

Java 的 assert 用于开发阶段验证内部逻辑,不适合做参数校验;单元测试请用 JUnit 断言。

如果你愿意,我也可以帮你:

  • 对比 assert vs if + throw
  • 讲 JUnit 断言的常用方法
  • 结合你当前的代码场景给出建议
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手