本文共 1040 字,大约阅读时间需要 3 分钟。
@ControllerAdvice
public class ValidParamExceptionHandler { @ExceptionHandler(value = Exception.class) @ResponseBody public Map<String, Object> allExceptionHandler(Exception e){ Map<String, Object> map = new HashMap<>(2); if(e instanceof BindException) { BindException ex = (BindException)e; BindingResult bindingResult = ex.getBindingResult(); StringBuilder errMsg = new StringBuilder(bindingResult.getFieldErrors().size() * 16); errMsg.append("Invalid request:"); for (int i = 0 ; i < bindingResult.getFieldErrors().size() ; i++) { if(i > 0) { errMsg.append(","); } FieldError error = bindingResult.getFieldErrors().get(i); errMsg.append(error.getField()+":"+error.getDefaultMessage()); } map.put("errcode", 500); map.put("errmsg", errMsg.toString()); } else { map.put("errcode", 500); map.put("errmsg", e.getMessage()); } return map; }
(1)这里@ControllerAdvice注解标注,@ControllerAdvice是@Controller的增强版,一般与@ExceptionHandler搭配使用。
如果标注@Controller,异常处理只会在当前controller类中的方法起作用,但是使用@ControllerAdvice,则全局有效。
(2)@ExceptionHandler注解里面填写想要捕获的异常类class对象
转载地址:http://jpbai.baihongyu.com/