在 Java 中,assert 关键字本身不会“抛出”你自定义的异常,但它在一定条件下会抛异常**——具体来说:
assert 的本质assert 是 Java 的 断言机制,语法有两种:
assert condition;
assert condition : "错误信息";
assert 语句完全不会执行,相当于不存在condition == false
AssertionErrorAssertionError("错误信息")✅ 所以:
assert 会在条件不成立时抛出 AssertionError(一种 Error,不是 Exception)
❌ 不能直接抛出 Exception 或其子类
assert false; // 抛的是 AssertionError
assert false : new RuntimeException(); // 错误用法,编译不过
AssertionError 继承自 java.lang.Error,不是 Exception
默认是关闭的:
java -ea com.example.Test
或:
java -enableassertions ...
✅ 适合:
❌ 不适合:
if (condition) {
throw new IllegalArgumentException("参数错误");
}
Java 的
assert不能抛Exception,但在开启断言时,条件不成立会抛AssertionError
如果你愿意,我可以帮你对比 assert vs 异常 vs 校验框架(如 Hibernate Validator)的使用场景。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。