1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > @ControllerAdvice注解的使用 全局异常捕获 自定义异常捕获

@ControllerAdvice注解的使用 全局异常捕获 自定义异常捕获

时间:2022-03-17 15:44:49

相关推荐

@ControllerAdvice注解的使用 全局异常捕获 自定义异常捕获

@ControllerAdvice

public class DefaultExceptionHandler {

@ExceptionHandler({UnauthorizedException.class})

@ResponseStatus(HttpStatus.UNAUTHORIZED)

public ModelAndView processUnauthenticatedException(NativeWebRequest request, UnauthorizedException e) {

ModelAndView mv = new ModelAndView();

mv.addObject("exception", e);

mv.setViewName("/Error/Unauthorized");

return mv;

}

@ExceptionHandler({RuntimeException.class})

@ResponseStatus(HttpStatus.BAD_REQUEST)

public ModelAndView processRuntimeException(NativeWebRequest request, RuntimeException e) {

ModelAndView mv = new ModelAndView();

mv.addObject("exception", e);

mv.setViewName("/Error/Error");

return mv;

}

@ExceptionHandler({MessageException.class})

@ResponseStatus(HttpStatus.BAD_REQUEST)

public ModelAndView processMessageException(NativeWebRequest request, MessageException e) {

ModelAndView mv = new ModelAndView();

mv.addObject("exception", e);

mv.setViewName("/Error/NotFound");

return mv;

}

@ExceptionHandler({DuplicateKeyException.class})

@ResponseStatus(HttpStatus.BAD_REQUEST)

public ModelAndView processDuplicateKeyException(NativeWebRequest request, DuplicateKeyException e) {

ModelAndView mv = new ModelAndView();

mv.addObject("exception", e);

mv.setViewName("/Error/500");

return mv;

}

@ExceptionHandler({Exception.class})

@ResponseStatus(HttpStatus.BAD_REQUEST)

public ModelAndView processException(NativeWebRequest request, Exception e) {

ModelAndView mv = new ModelAndView();

mv.addObject("exception", e);

mv.setViewName("/Error/404");

return mv;

}

}

捕获异常也可以返回json:

@ExceptionHandler

@ResponseBody

public APIManageBaseResp exceptionHandler(Exception e) {

logger.error("调用接口出现异常:{}",e);

APIManageBaseResp<String> resp = new APIManageBaseResp();

resp.setResultCode(HttpStatus.SC_INTERNAL_SERVER_ERROR);

if(e instanceof MessageException){

resp.setErrorMsg(e.getMessage());

}else{

resp.setErrorMsg("调用接口出现异常:"+e.getMessage());

}

resp.setDataFiled("");

return resp;

}

@RequestMapping(value = "/testFacade")

@ResponseBody

public String testFacade() {

int a = 1/0;

return "ok";

}

@RequestMapping(value = "/testFacade1")

@ResponseBody

public String testFacade1() throws MessageException {

throw new MessageException("错了en ");

}

@RequestMapping(value = "/testFacade2")

@ResponseBody

public String testFacade2() {

throw new UnauthorizedException("错了b ");

}

@RequestMapping(value = "/testFacade3")

@ResponseBody

public String testFacade3() {

throw new RuntimeException("错了a ");

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。