异常处理是由框架统一处理的。对异常做了下面单元测试
AuthorizeException
BusinessException
以 Controller 为例,演示通过 Code 值抛出 600 异常的方法
throw new BusinessException(messageUtil.getMessage("welcome",null,"缺省字符串"));
返回信息
{"status": 600,"error": "Business Error","message": "参数无效","path": "/result/exception","exception": "com.wukong.core.exceptions.BusinessException","errors": null,"timestamp": "2018-05-31T09:42:11.224+0000"}
通过带异常变量列表的方式来抛出 601 异常。
//抛出COMM_PARAM_IS_INVALID(30101, "参数无效"),异常。@RequestMapping("/exception")public String exception1() {//构造一个HashMap用于存放违反规则的变量与提示信息Map p=new HashMap();//将变量名作为Key,提示信息作为Value存入Map中p.put("email","不是一个合法的电子邮件地址");p.put("name","长度需要在6和50之间");//将p作为参数抛出throw new BusinessException(p);}
返回信息,该 Controller 的返回结果如下(其中 errors 与标注格式还存在一定区别,有待进一步优化)。
{"status": 601,"error": "Bad Request","message": "参数无效",d"path": "/result/exception","exception": "com.wukong.core.exceptions.BusinessException","errors": {"name": "长度需要在6和50之间","email": "不是一个合法的电子邮件地址"},"timestamp": "2018-05-31T09:41:16.461+0000"}
针对 AntDesign 的返回结果,第二个参数是showType
, antDesignPro 会根据这个来判断,错误的提示方法
throw BusinessException.myBuilder("aaaa",2);
AntDesign 中定义可选的数值有:
error display type: 0 silent; 1 message.warn; 2 message.error; 4 notification; 9 page
关于 400 错误的四种异常抛出情形
大部分情况,步需要自定义异常,如果需要,请按照下面步骤执行:
1:继承BaseException
2:修改GlobalExceptionHandler