Assert断言
Assert断言关键字:
一、断言的作用
Assert关键字是在JDK1.4之后出现,使用Java中的 assert
语句实现,配合布尔表达式一起使用,达到调试程序开发过程中的判断、调试程序的作用。 在执行断言时,它被认为是正确的。 如果失败,JVM会抛出一个名为 AssertionError
的错误。 断言是默认关闭的,如果想使用断言进行判断,需要手动打开断言功能。如果要开启断言检查,则需使用-enableassertions
或 -ea
JVM参数来开启;如果要手动忽略断言检查,则可以通过使用 -disableassertions
或 -da
JVM参数来忽略断言语句。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rc8XADoC-1605531621425)(C:UsersLiu-PCAppDataRoamingTypora ypora-user-imagesimage-20201101102424436.png)]
二、断言(assert)的语法
JDK提供的断言语法:
assert expression;
assert expression : errorMessage;
①:assert expression(断言某个变量、表达式为真),expression为Boolean类型,是一个期望值,期望该表达式为true/false
public class AssertTest {
public static void main(String[] args) {
int value = 15;
assert value >= 20;
System.out.println("value is " + value);
}
}
在开启断言运行demo:
Exception in thread "main" java.lang.AssertionError
at AssertTest.main(AssertTest.java:11)
②:assert 期望值 : “当不是期望值时报Runtime异常”
public class AssertTest {
public static void main(String[] args) {
int value = 15;
assert value >= 20 : "Underweight";
System.out.println("value is " + value);
}
}
开启断言调试,发现报异常Underweight
注意:不在IDEA开启断言(项目在linux上以jar的形式运行时),运行这个demo,发现并没有报异常。这是因为Java在执行程序的时候默认是不启动断言检查的,即所有的断言语句都将被忽略。那么,这样大家就会觉得断言这个功能有些鸡肋了,只能是作为一种调试方式,或者在单元测试中使用。
三、断言配合业务枚举使用
如果你觉得使用断言比较鸡肋,那么你可以整合SpringBoot的全局异常注解RestControllerAdvice捕获全局异常,配合**@ExceptionHandler**注解定义异常处理类
可以试用spring的断言或者hutool的断言
@AutoLog(value = "停用当前类型-编辑")
@ApiOperation(value = "停用当前类型-编辑", notes = "停用当前类型-编辑,禁用:1,启用:0")
@PostMapping(value = "/stopOrStartCategory")
public Result<?> disableType(@RequestBody ProductCategory productCategory) {
Assert.isTrue(productCategoryService.stopOrStartCategory(productCategory), ResponseEnum.FAILED_TO_DEACTIVATE_CLASSIFICATION.getMsg());
return Result.OK();
}
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击