• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java异常处理拦截器详情

java 搞代码 4年前 (2022-01-09) 51次浏览 已收录 0个评论

使用异常处理拦截器,可以不用写那么多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 +
      <a>本文来源gao($daima.com搞@代@#码8网^</a>          ", timestamp=" + timestamp +
                '}';
    }
}

public enum ErrorCode {
 
    OK(0, "success"),
    FAIL(1000, "fail"),
    ALERT(1001, "alert"),
}

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

到此这篇关于java异常处理拦截器详情的文章就介绍到这了,更多相关java异常处理拦截器内容请搜索搞代码以前的文章或继续浏览下面的相关文章希望大家以后多多支持搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java异常处理拦截器详情

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址