赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
学习保存代码用
自定义异常处理,在Controller中自定义发生的异常。
@ControllerAdvice
@ExceptionHandler
@ResponseBody
/** * 自定义基础异常 */ public class BaseException extends RuntimeException{ private static final long serialVersionUID = 1L; /** * 所属模块 */ private String module; /** * 错误码 */ private String code; /** * 错误码对应的参数 */ private Object[] args; /** * 错误消息 */ private String defaultMessage; public BaseException(String module, String code, Object[] args, String defaultMessage) { this.module = module; this.code = code; this.args = args; this.defaultMessage = defaultMessage; } public BaseException(String module, String code, Object[] args) { this(module, code, args, null); } public BaseException(String module, String defaultMessage) { this(module, null, null, defaultMessage); } public BaseException(String code, Object[] args) { this(null, code, args, null); } public BaseException(String defaultMessage) { this(null, null, null, defaultMessage); } @Override public String getMessage() { String message = null; if (!StringUtil.isEmpty(code)) { message = code; } if (message == null) { message = defaultMessage; } return message; } public String getModule() { return module; } public String getCode() { return code; } public Object[] getArgs() { return args; } public String getDefaultMessage() { return defaultMessage; } }
各个模块继承基础异常模块(举例)
/**
* 用户信息异常类
*/
public class UserException extends BaseException {
private static final long serialVersionUID = 1L;
public UserException(String code, Object[] args)
{
super("user", code, args, null);
}
}
@ControllerAdvice public class GlobalExceptionController { /** * 全局异常捕捉处理 * @param e * @return */ @ResponseBody @ExceptionHandler(value = Exception.class) public Map errorHandler(Exception e) { System.out.println("用户异常调用测!"); Map map = new HashMap(); map.put("code", 100); map.put("msg", e.getMessage()); return map; } /** * 拦截捕捉自定义异常 用户删除异常 * @param ex * @return */ @ResponseBody @ExceptionHandler(value = UserDeleteException.class) public AjaxResult UserDeleteException(UserDeleteException ex) { return AjaxResult.error(ex.getMessage()); } /** * 拦截捕捉自定义异常 用户锁定异常 * @param ex * @return */ @ResponseBody @ExceptionHandler(value = UserBlockedException.class) public AjaxResult UserBlockedException(UserBlockedException ex) { System.out.println("用户锁定异常调用!"); return AjaxResult.error(ex.getMessage()); } }
错误类型的参数必须和@ExceptionHandler里的参数保持一致,否则会找不到解析器。返回图的话去掉@ResponseBody,返回类型设为ModelAndView
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。