搜索
您的当前位置:首页正文

项目通用解决方案-异常统一处理

来源:星星旅游
项⽬通⽤解决⽅案-异常统⼀处理

项⽬通⽤解决⽅案 - 异常统⼀处理

1.1 什么是通⽤异常

⽬前的代码中如果发⽣系统异常,则直接会给⽤户抛出不友好的异常信息。为了增加⽤户的体验,应该给⼀些适当信息进⾏提⽰。例如删除频道的代码,如下

⽬前红框圈起来的是可以给⽤户友好提⽰的,但是当执⾏删除这⼀⾏代码,如何失败了该如何处理。有可能系统会抛出异常。那这个时候就不应该把异常信息直接返回给⽤户。那该如何处理呢?

项⽬开发中肯定会设置全局异常处理,不管系统发⽣了任何不可知的异常信息,都应该给⽤户返回友好提⽰信息。

1.2 通⽤异常配置

在heima-leadnews-common模块中新建类ExceptionCatchpackage com.heima.common.exception;

import com.heima.model.common.dtos.ResponseResult;

import com.heima.model.common.enums.AppHttpCodeEnum;import lombok.extern.log4j.Log4j2;

import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;@ControllerAdvice//控制器增强@Log4j2

public class ExceptionCatch {

//捕获Exception此类异常

@ExceptionHandler(Exception.class) @ResponseBody

public ResponseResult exception(Exception exception) { exception.printStackTrace(); //记录⽇志

log.error(\"catch exception:{}\ //返回通⽤异常

return ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR); }}

@ControllerAdvice 控制器增强注解

@ExceptionHandler 异常处理器 与上⾯注解⼀起使⽤,可以拦截指定的异常信息

1.3 集成到项⽬中使⽤

在heima-leadnews-admin模块中新增类ExceptionCatchConfigpackage com.heima.admin.config;

import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration

@ComponentScan(\"com.heima.common.exception\")public class ExceptionCatchConfig {}

1.4 测试

如:在删除频道的时候传的id为数值类型,如果不添加全局异常返回如下:

添加异常信息以后,返回如下:

因篇幅问题不能全部显示,请点此查看更多更全内容

Top