java异常处理拦截器详情
使用异常处理拦截器,可以不用写那么多try…catch…。
我有个功能,就是前端提交短信内容到后端,后端进行一系列的处理,其中是要将短信内容提交到公共短信接口。微服务框架,公共短信接口是另外一个服务。这样子就会有一个隐患,假如这个服务不开,或者因为网络原因无法访问,怎么办?
可以原子操作,也可以重新提交啥的,不管怎么搞,错误提示是避免不了的。问题是,系统赤裸裸的贴代码的错误提示方式,极不友好。应当捕获这个错误,然后改用较为友好的内容进行提示。
最原始的办法,可以层层try…catch…,
从service
一直到controller
这里返回给前端。但未免太繁琐,感觉很low
。作为程序员,不应当这么机械。
参照网上办法,在controller
这里设置一个异常处理拦截器:
@RestController @RequestMapping("sms/order") public class DzSmsSendOrderController { 。。。 @ExceptionHandler(value = { RuntimeException.class}) public ResultBody handleRuntimeException(Exception ex) throws Exception { if (ex.getMessage().indexOf("project-sms-api") != -1) { //鉴别一下是否为目标异常 return ResultBody.failed().msg("访问短信接口失败,请确认相关服务是否已开启"); } else throw ex; } }
这个ResultBody
是一个自定义的对象,前端根据其返回的编号等判断是否成功。
@ApiModel(value = "响应结果") public class ResultBody<T> implements Serializable { 。。。 public static ResultBody failed() { return new ResultBody().code(ErrorCode.FAIL.getCode()).msg(ErrorCode.FAIL.getMessage()); } @Override public String toString() { return "ResultBody{" + "code=" + code + ", message='" + message + '\'' + ", path='" + path + '\'' + ", data=" + data + ", httpStatus=" + httpStatus + ", extra=" + extra + ", timestamp=" + timestamp + '}'; } } public enum ErrorCode { OK(0, "success"), FAIL(1000, "fail"), ALERT(1001, "alert"), }
前端就根据这个code
,来判断成功与否。
到此这篇关于java异常处理拦截器详情的文章就介绍到这了,更多相关java异常处理拦截器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Spring Boot中自定义注解结合AOP实现主备库切换问题
这篇文章主要介绍了Spring Boot中自定义注解+AOP实现主备库切换的相关知识,本篇文章的场景是做调度中心和监控中心时的需求,后端使用TDDL实现分表分库,需要的朋友可以参考下2019-08-08Spring5+SpringMvc+Hibernate5整合的实现
这篇文章主要介绍了Spring5+SpringMvc+Hibernate5整合的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-06-06java基础-给出一个随机字符串,判断有多少字母?多少数字?
这篇文章主要介绍了java基础-给出一个随机字符串,判断有多少字母?多少数字?文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-04-04
最新评论