Java断言(assert)

断言(assert)语句一般用于程序不准备通过捕获异常来处理的错误。例如:账号交易时,对于支出的金额为正数(收入+支出=纯收入)或者收入的金额为负数,程序必须立即停止执行,同时发现错误,当正式收益时,就可以避开错误,但仍保留断言语句在程序中,之后再次调试时,可以重新启动断言也可以不断发现新的问题和解决语句。

语法格式:

assert booleanExpression; // 求值为booolean类型表达式

assert booleanExpression:messageExpression; // 求值为字符串类型的表达式

作用条件:

booleanExpression :

值为true时,程序从断言语句处继续执行;

值为false时,程序从断言语句处停止执行。

  1. booleanExpression:messageExpception :

值为true时,程序从断言语句处继续执行;

值为false时,程序从断言语句处停止执行,并输出messageException表达式的值,提示用户 出现问题。

启用/关闭断言语句:

当使用Java解析器直接运行应用程序时,默认关闭,通过使用 -ea 命令启用:

在springboot中可以使用spring提供的Assert类的方法对前端来的参数进行校验

Assert断言基本上替换传统的if判断,减少业务参数校验的代码行数,提高程序可读性。

@Validated、@Valid对比及详细用法

前面介绍了Validator框架,还需要Assert吗?

Validator只解决了参数自身的数据校验,解决不了参数和业务数据之间校验

java 复制代码
@PostMapping(value = "/test")

public ResponseStandard test(@Validated @RequestBody User user) {
    //通过用户名 查询用户
    User user1 = getUser(user);
    Assert.notNull(user1, "用户不存在(Assert抛出)");
    return ResponseStandard.successResponse("成功");
}


User  getUser(User user){
return null;
}

接口抛出异常和使用 assert 断言

Java 中,接口抛出异常和使用 assert 断言的作用和使用方法有一些区别。

1异常抛出:

○接口中的方法声明可以抛出异常,表示该方法可能会出现异常情况。实现接口的类可以选择捕获这些异常或继续抛出。通过在方法签名中声明异常,可以提醒其他开发者该方法可能抛出什么样的异常。

○异常的使用可以更为灵活,不同类型的异常可以被捕获并进行相应的处理。

2assert 断言:

○assert 关键字用于在代码中插入断言语句,用于在开发和调试阶段验证程序的一些假设条件。

○断言通常用于检查程序的内部状态是否符合预期。如果断言失败,表示程序出现了错误。在生产环境中,断言语句默认会被忽略。

○断言通常是在开发和调试阶段使用的,可以帮助开发人员定位和修复代码中的问题。

总体来说,异常抛出用于处理方法可能出现的异常情况,而 assert 断言则用于验证程序的内部状态是否满足预期。异常更加灵活和通用,而断言则更多用于开发和调试阶段。

相关推荐
ss273几秒前
阻塞队列:生产者-消费者模式
java·开发语言
艾莉丝努力练剑3 分钟前
【Linux进程(一)】深入理解计算机系统核心:从冯·诺依曼体系结构到操作系统(OS)
java·linux·运维·服务器·git·编辑器·操作系统核心
guslegend3 分钟前
SpringBoot 缓存深入
java
⑩-10 分钟前
Entity、VO、DTO、Form 对象详解
java
csdn_life1813 分钟前
Rustrover 如何像Java一样直接 进行调试和运行
java·开发语言·rust
mike041218 分钟前
Eclipse配置Maven详细教程(实测)
java·eclipse·maven
草莓熊Lotso1 小时前
C++11 核心特性实战:列表初始化 + 右值引用与移动语义(附完整代码)
java·服务器·开发语言·汇编·c++·人工智能·经验分享
CoderYanger8 小时前
C.滑动窗口-求子数组个数-越长越合法——2799. 统计完全子数组的数目
java·c语言·开发语言·数据结构·算法·leetcode·职场和发展
C++业余爱好者8 小时前
Java 提供了8种基本数据类型及封装类型介绍
java·开发语言·python
想用offer打牌8 小时前
RocketMQ如何防止消息丢失?
java·后端·架构·开源·rocketmq