全局捕获异常
1.首先定义一个捕获异常的类
相关的注解说明我已经写在注释里面了
/** * Created by lizhen on 2018/2/6. * ControllerAdvice 注解 全局捕获异常的类 */ @ControllerAdvice public class GlobalExceptionHandler { /** * 全局捕获异常 * ExceptionHandler 表示要拦截那些异常,这个例子测试的是捕获运行时的异常 * @param ex * @return */ @ExceptionHandler(RuntimeException.class) @ResponseBody public Map<String, Object> result(Exception ex) { Map<String, Object> result = new HashMap<String, Object>(); result.put("errorcode", "500"); //此处可以将异常捕获,并将捕获的信息打印出来 result.put("errorMsg", ex.getMessage()); return result; }
2.创造一个运行时的异常,在浏览器中查看效果
/** * RestController 注解表示改接口返回的都是json格式的 * EnableAutoConfiguration 帮你注入spring容器,并启动tomcat容器 */ @RestController public class HelloWordController { private static Logger log = Logger.getLogger(HelloWordController.class); @Autowired private Userservice userservice; /** * 全局捕获异常 * * @return */ @RequestMapping("/HelloWordController") public String index() { /** * 加入这两行代码是为了测试全局捕获异常 */ List list = new ArrayList(); list.get(10); return "success"; }
3.浏览器中输入网址,查看效果
自定义异常的使用
1.创建一个自定义异常的类
/** * 自定义异常类 * Created by lizhen on 2018/2/8. */ public class BusinessException extends RuntimeException { /** * 状态码 */ private String code; /** * 异常信息 */ private String msg; /** * 构造函数 */ public BusinessException(String code, String msg) { this.code = code; this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } @Override public String toString() { return "BusinessException{" + "code='" + code + '\'' + ", msg='" + msg + '\'' + '}'; } }
2.自定义异常
/** * 使用自定义异常 * @param businessException * @return */ @ResponseBody @ExceptionHandler(BusinessException.class) public Map<String ,String> getException(BusinessException businessException){ Map map =new HashMap(); map.put("code",businessException.getCode()); map.put("Msg",businessException.getMsg()); return map; }
3.自定义异常的使用
/** * 测试自定义异常 */ @RequestMapping("/testBusinessException") public void testBusinessException() { throw new BusinessException("562", "我要使大招了!!!请接招!!!!"); }