全局处理异常示例
@ControllerAdvice
@Slf4j
public class GlobleExceptionHandler {
@ExceptionHandler(value = {MyException.class})
@ResponseBody
public ResultBean errorHandler(MyException e){
log.info("业务异常发生:{}",e.getMessage());
return ResultBean.errorMsg(e.getMessage());
}
}
统一返回的结果类
public class MyException extends RuntimeException{
/**
* 错误状态码
* */
int errorCode;
/**
* 返回信息
* */
String message;
public static MyException error(String message){
return new MyException(message);
}
public static MyException error(){
return new MyException();
}
public MyException() {
this.errorCode = 500;
}
public MyException(String message) {
this.errorCode = 500;
this.message = message;
}
public int getErrorCode() {
return errorCode;
}
public void setErrorCode(int errorCode) {
this.errorCode = errorCode;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
Controller层
@GetMapping("/{id}")
public Book getDetail(@PathVariable Long id){
return bookService.getDetail(id);
}
Service层
public Book getDetail(Long id){
Book resultBook = Optional.ofNullable(getById(id))
.orElseThrow(()->new MyException("没有找到该书籍")); //这里主动抛出异常交给全局异常处理
return resultBook;
运行测试
结果: