1.建一个异常捕捉类
package com.atguigu.commonutils;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
public class ExceptionUtil {
public static String getMessage(Exception e) {
StringWriter sw = null;
PrintWriter pw = null;
try {
sw = new StringWriter();
pw = new PrintWriter(sw);
// 将出错的栈信息输出到printWriter中
e.printStackTrace(pw);
pw.flush();
sw.flush();
} finally {
if (sw != null) {
try {
sw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
if (pw != null) {
pw.close();
}
}
return sw.toString();
}
}
2.编写统一异常处理类,全局异常处理,自定义异常处理
package com.atguigu.servicebase.config.exceptionhandler;
import com.atguigu.commonutils.ExceptionUtil;
import com.atguigu.commonutils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
//指定出现什么异常出现这个方法
@ExceptionHandler(Exception.class)
@ResponseBody //为了能够返回数据
public R error(Exception e) {
e.printStackTrace();
return R.error().message("执行了全局异常处理...");
}
//特定异常处理
@ExceptionHandler(ArithmeticException.class)
@ResponseBody
public R error(ArithmeticException e) {
e.printStackTrace();
return R.error().message("执行了ArithmeticException异常处理...");
}
//自定义异常处理
@ExceptionHandler(GuliException.class)
@ResponseBody
public R error(GuliException e) {
e.printStackTrace();
log.error(ExceptionUtil.getMessage(e));
return R.error().code(e.getCode()).message(e.getMsg());
}
//调用方法
// try {
// int i = 10/0;
// } catch (Exception e) {
// throw new GuliException(20001,"分母不能为0");
// }
}
自定义异常处理的类,上面是方法
package com.atguigu.servicebase.config.exceptionhandler;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GuliException extends RuntimeException {
@ApiModelProperty(value = "状态码")
private Integer code;
private String msg;
@Override
public String toString() {
return "GuliException{" +
"message=" + this.getMsg() +
", code=" + code +
'}';
}
}
浙公网安备 33010602011771号