assert 不仅是个报错函数,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个 if 语句,但是更加简洁;
示例:
@GetMapping("test_assert")
public String testAssert(Integer id){
Assert.isTrue(id<=0,"id 非法");
Country country = countryService.getById(id);
return country.getCountryName();
}
Assert的内部处理:
public static void isTrue(boolean expression, String message) {
if (!expression) {
throw new IllegalArgumentException(message);
}
}
可以看到,如果校验不通过,比如传参id=-1,则程序抛出异常,并且程序中断;
通常的处理:在全局异常处理类中捕获IllegalArgumentException并自定义返回结果;
注意点:
- 在函数开始处检验传入参数的合法性
- 每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败
-
不能使用改变环境的语句,因为assert只在DEBUG 版本中才有效,编译为 Release 版本则被忽略,如果这么做,会使用程序在真正运行时遇到问题 错误: assert(i++ < 100)
-
-