因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象
所以对于这些特有的问题可以按照java的对问题封装的思想。
将特有的问题,进行自定义的异常封装
1、自定义异常类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor //有参构造方法
@NoArgsConstructor //无参构造方法
public class PangException extends RuntimeException {
/** 状态码*/
private Integer code;
/** 错误信息*/
private String msg;
}
2、统一异常处理类
使用 @ControllerAdvice 实现全局异常处理,只需要定义类
使用@ExceptionHandler 注解用来指明异常的处理类型
import com.pang.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
public class GlobalExceptionHandler {
//指定出现Exception异常执行这个方法
@ExceptionHandler(Exception.class)
@ResponseBody //为了返回数据
public R error(Exception e){
return R.error().message("执行了全局异常处理");
}
//自定义PangException异常
@ExceptionHandler(PangException.class)
@ResponseBody //为了返回数据
public R error(PangException e){
return R.error().code(e.getCode()).message(e.getMsg());
}
}
3、使用仅需要throw即可
throw new PangException(20001, "出现异常了...");