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

不用实现异常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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,246评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,834评论 18 399
  • 吵吵闹闹的世界静了下来,小东西跟着姥姥姥爷出门遛弯了。我难得有写字的时间和空间。真的很谢谢爸妈,为我操劳,替我带娃...
    土里吧唧的小孩阅读 125评论 0 0
  • 2016年,里约奥运会,男子步枪三姿资格赛,世界排名第一的美国射击名将马修·埃蒙斯最后一枪打偏,爆冷无缘决赛。大家...
    绝世之姿阅读 790评论 0 4
  • 从开始说要回扬时,朋友的儿子和媳妇就去买了许多的海鲜,给我们带回,又给我和婆婆买了衣服,开车送我们去车站,等车开了...
    临水就是阿临阅读 287评论 4 1