美文网首页
统一异常处理(前后端分离项目)

统一异常处理(前后端分离项目)

作者: 神豪VS勇士赢 | 来源:发表于2018-08-10 21:23 被阅读271次

    不用实现异常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

    相关文章

      网友评论

          本文标题:统一异常处理(前后端分离项目)

          本文链接:https://www.haomeiwen.com/subject/lkolbftx.html