一、什么是统一异常处理
1、制造异常
除以0
int a = 10/0;
2、什么是统一异常处理
我们想让异常结果也显示为统一的返回结果对象,并且统一处理系统的异常信息,那么需要统一异常处理
二、统一异常处理
创建统一异常处理器
在service-base中创建统一异常处理类GlobalExceptionHandler.java:
package com.drj.servicebase.exceptionhandler;
import com.drj.commonutils.R;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 统一异常处理类
* @author taotao
*/
@ControllerAdvice
public class GlobalExceptionHandler {
//指定出现什么类型的异常之后进行执行这个方法
@ExceptionHandler(Exception.class)
@ResponseBody
public R error(Exception e) {
e.printStackTrace();
return R.error().message("----进入异常处理----");
}
}
三、处理特定异常
添加异常处理方法
GlobalExceptionHandler.java中添加
@ExceptionHandler(ArithmeticException.class)
@ResponseBody
public R error(ArithmeticException e){
e.printStackTrace();
return R.error().message("执行了自定义异常");
}
四、自定义异常
1、创建自定义异常类
package com.drj.servicebase.exception;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Program: guli_parent
* @Description
* @Author: 涛涛 * ^ *
* @Create: 2021-01-15 17:46
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MyselfException extends Exception {
@ApiModelProperty(value = "状态码")
private Integer code;
@ApiModelProperty(value = "异常信息")
private String msg;
}
2、业务中需要的位置抛出MyselfException
try {
int a = 10/0;
}catch(Exception e) {
throw new MyselfException (20001,"出现自定义异常");
}
3、添加异常处理方法
GlobalExceptionHandler.java中添加
@ExceptionHandler(MyselfException .class)
@ResponseBody
public R error(MyselfException e){
e.printStackTrace();
return R.error().message(e.getMsg()).code(e.getCode());
}
注意:模块之间不可以直接调用的时候,需要在pom文件中进行模块之间的引入