目录
异常处理
- 程序开发过程中不可避免地会遇见异常现象
- 在案例功能的实现中我们并没有设置如何对于程序出现异常时如何进行处理
-
在三层架构中,如果持久层程序运行出现错误,由于我们在三层架构中都没有设置如何处理程序运行异常,那么就会将程序运行的报错信息传递给调用层,比如:Mapper接口类出现问题,那么就会把报错返回给调用的Service类,Service类就会把报错返回给Controller类,最后返回给前端。
-
具体如下:添加一个已经存在的部门,由于最开始创建depts数据表时,限制了部门名称的唯一性
-
前端获取的异常信息
-
处理异常
方案一
- 在Controller类中的方法中进行try...catch处理
- 但是控制类中的方法有很多,这样做会加大代码的冗余程度,不推荐。
方案二
- 定义一个全局异常处理器
-
全局异常处理器,将异常处理过后,将处理结果以标准的响应结果Result返回给前端。
-
具体代码如下
*javapackage com.example.tlias.Exception; import com.example.tlias.pojo.Result; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; // todo 全局异常处理器 @RestControllerAdvice //todo = ControllerAdvice + ResponseBody(将方法的返回值转换为JSON格式数据) public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) // todo 设置要捕获的异常,这里设置捕获所有异常类 public Result ex(Exception e) { e.printStackTrace();//输出异常堆栈信息 return Result.error("对不起,操作失败,请联系管理员"); } }
-
运行结果
-
将设置的Result类的响应结果以JSON数据格式响应给前端
-
小结
- 全局异常处理器
- @RestControllerAdvice
- @ExceptionHandler //设置捕获异常的类型