开源框架EL-ADMIN开发自己的 web应用(7)-异常控制

第(5)节与第(6)节仔细研究了eladmin对于后端与前端的权限控制,本节主要讨论如何在系统中进行异常控制。

1. 后端异常定义

我们还是根据源码来寻找答案,仔细研究eladmin的官网对于异常处理的说明后,我们首先来看后端异常实体类ApiError
在这里插入图片描述
这个实体中主要封装三个信息

  • 状态status,默认是400;
  • timestamp,默认是当前的时间;
  • String类型的message。
    然后再看看通用异常BadRequestException的定义
    在这里插入图片描述
    由上图可知,BadRequestException封装了status与message,message需要传入,status默认是BAD_REQUEST,我们在IDEA中按住ctrl键点击可以看到
    在这里插入图片描述
    默认BAD_REQUEST的值为400。
    官方给了两个自定义异常的实例,我们来看其中一个,EntityNotFoundException,看到名子就知道这是一个实体不存在异常,看看它的结构
    在这里插入图片描述
    这个异常类很简单,传入对象对应class类(其实主要就是获取类的名子,看箭头指示),再传入这个类的字段名,再传入字段中该类的值,然后输出消息"这个类的field字段值 val 不存在"。我们来举一个例子吧!

2. 后端已有异常类测试

首先在后端找到我们之前创建的“我的岗位管理”的gen模块,不清楚怎么利用代码生成器自动创建gen模块的请回看第(2)节与第(3)节的内容,打开MyJob这个类
在这里插入图片描述
我们发现有name字段属性,于是我们用EntityNotFoundException做一个测试,打开eladmin-system模块下的测试类EladminSystemApplicationTests,这部分代码,eladmin已经自动为我们配置好了,我们利用@Test测试方法抛出一个异常,如图:
在这里插入图片描述
利用junit运行该函数contextLoads,可以得到如下结果
在这里插入图片描述
使用就是这么简单。这里重点注意两个注解的使用
在这里插入图片描述
这两个注解保证在junit运行时会自动加载系统的上下文,这样EladminSystemApplicationTests才能识别出MyJob这个类,以后我们自己写系统的测试类时,一定要加上这两个注解。
官方还提供了一些默认的异常类(如下图),大家可以按照上面的方法自己测一下。
在这里插入图片描述

3. 后端全局异常拦截

参照官网,全局异常拦截定义在GlobalExceptionHandler中
在这里插入图片描述
这里一定要记住这两个关键注解:

  • @RestControllerAdvice:默认会扫描指定包中所有@RequestMapping注解
  • @ExceptionHandler:通过@ExceptionHandler的 value 属性可过滤拦截的条件,即按照抛出异常的类型分别进行处理
    我们来做两个例子走一下全部的流程,深刻理解一下。

3.1 测试EntityNotFoundException

首先在进入“我的岗位管理”界面查询所有岗位时,抛出异常
在这里插入图片描述
在全局异常拦截类中GlobalExceptionHandler对Entity

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值