java异常处理拦截器详情

网友投稿 254 2022-11-29

java异常处理拦截器详情

使用异常处理拦截器,可以不用写那么多try…catch…。

我有个功能,就是前端提交短信内容到后端,后端进行一系列的处理,其中是要将短信内容提交到公共短信接口。微服务框架,公共短信接口是另外一个服务。这样子就会有一个隐患,假如这个服务不开,或者因为网络原因无法访问,怎么办?

可以原子操作,也可以重新提交啥的,不管怎么搞,错误提示是避免不了的。问题是,系统赤裸裸VKlceJB的贴代码的错误提示方式,极不友好。应当捕获这个错误,然后改用较为友好的内容进行提示。

最原始的办法,可以层层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 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 +

http:// '}';

}

}

public enum ErrorCode {

OK(0, "success"),

FAIL(1000, "fail"),

ALERT(1001, "alert"),

}

前端就根据这个code,来判断成功与否。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:大数据之脚踏实地学09--Hive嵌入式安装
下一篇:大数据之脚踏实地学03--Linux的常用文件级命令
相关文章

 发表评论

暂时没有评论,来抢沙发吧~