package com.atguigu.common.config.exception;
import com.atguigu.com.result.ResultCodeEnum;
import lombok.Data;
@Data
public class GuiguException extends RuntimeException {
private Integer code; //状态码
private String msg; // 描述信息
public GuiguException(Integer code , String msg){
// 将异常信息传递给父类 以便抛出异常能在控制台或日志上显示
super(msg);
this.code = code;
this.msg = msg;
}
/**
* 接收枚举类型对象
*/
public GuiguException(ResultCodeEnum resultCodeEnum){
super(resultCodeEnum.getMessage());
this.code = resultCodeEnum.getCode();
this.msg = resultCodeEnum.getMessage();
}
public String toString(){
return "GuliException{ " +
"code = " + code +
",message=" + this.getMessage() +
'}';
}
}
package com.atguigu.common.config.exception;
import com.atguigu.com.result.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
public class GlobExceptionHandler {
// 全局异常处理 执行的方法
@ExceptionHandler(Exception.class)
@ResponseBody
public Result error(Exception e){
e.printStackTrace();
return Result.fail().message("执行全局异常处理..");
}
// 特定异常处理
@ExceptionHandler(ArithmeticException.class)
@ResponseBody
public Result error(ArithmeticException e) {
e.printStackTrace();
return Result.fail().message("除0异常");
}
// 自定义异常处理
@ExceptionHandler(GuiguException.class)
@ResponseBody
public Result error(GuiguException e){
e.printStackTrace();
return Result.fail().code(e.getCode()).message(e.getMsg());
}
}