不用实现异常Handler接口;
不用配置异常Handler实现类。
开发基类,所有Action作为子类继承就可以了。
响应Json格式错误信息给调用业务方
第一步:开发自定义异常
public class JsonException extends Exception{
private int code;
private String message;
public JsonException(int code, String message) {
super();
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
第二步:开发异常处理的基类
注解:@ExceptionHandler
public class BaseController {
@ResponseBody
@ExceptionHandler
public Map<String,Object> baseControllerException(HttpServletRequest request,Exception ex){
Map<String,Object> stringObjectMap=new HashMap<>();
if(ex instanceof JsonException){
JsonException jsonException= (JsonException) ex;
stringObjectMap.put("code",jsonException.getCode());
stringObjectMap.put("message",jsonException.getMessage());
}else{
stringObjectMap.put("code","-200");
stringObjectMap.put("message","系统繁忙");
}
return stringObjectMap;
}
}
第三步:开发Action继承基类
可以做业务异常分支处理
@Controller
@RequestMapping("/pay")
public class PayController extends BaseController {
@RequestMapping("/pay.do")
@ResponseBody
public Map<String,Object> pay(HttpServletRequest request) throws JsonException {
Map<String,Object> stringObjectMap= new HashMap<>();
String pay = request.getParameter("pay");
if(StringUtils.isEmpty(pay.trim())){
throw new JsonException(-100,"对不起参数为空");
}
try {
int i=1/0;
} catch (Exception e) {
e.printStackTrace();
throw new JsonException(-101,"对不起 除以0 了 ");
}
if("魏雪".equals(pay)){
stringObjectMap.put("code",200);
stringObjectMap.put("message","参数传入正确");
}
return stringObjectMap;
}
}
拓展: 我们可以优化代码
在自定义异常中给出方法
image.png
在基类中返回自定义异常中的Map
image.png
网友评论