java异常处理拦截器详情

 更新时间:2021年10月22日 10:41:06   作者:左直拳  
这篇文章主要介绍了java异常处理拦截器,使用异常处理拦截器,可以不用写那么多try…catch…,下面就来学习关于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异常处理拦截器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一篇文章带你入门Springboot整合微信登录与微信支付(附源码)

    一篇文章带你入门Springboot整合微信登录与微信支付(附源码)

    微信支付是腾讯公司的支付业务品牌,微信支付商户平台支持线下场所、公众号、小程序、PC网站、APP、企业微信等经营场景快速接入微信支付。这里一篇文章带你入门!
    2021-06-06
  • Spring JPA联表查询之OneToOne源码详解

    Spring JPA联表查询之OneToOne源码详解

    这篇文章主要为大家介绍了Spring JPA联表查询之OneToOne源码详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Springcloud ribbon负载均衡算法实现

    Springcloud ribbon负载均衡算法实现

    这篇文章主要介绍了Springcloud ribbon负载均衡算法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • JavaWeb中导出excel文件的简单方法

    JavaWeb中导出excel文件的简单方法

    下面小编就为大家带来一篇JavaWeb中导出excel文件的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • Java栈的运用之中缀表达式求值详解

    Java栈的运用之中缀表达式求值详解

    本文来介绍一题中缀表达式求值的问题,就是给定一个中缀计算式,编写程序将这个式子运算结果给计算出来,其实和后缀表达式的思路差不多,都是栈的运用问题,感兴趣的可以了解一下
    2022-11-11
  • Java把多个对象的list的数据合并的方法示例

    Java把多个对象的list的数据合并的方法示例

    在Java中合并多个List可以使用遍历、Stream API或Apache Commons Collections,通过遍历各个List并将元素添加到新List实现合并,Java 8提供了Stream API,使用Stream.of()和flatMap()可以简洁地合并List,文中给出了多种方法示例,需要的朋友可以参考下
    2024-09-09
  • springboot @PostConstruct无效的解决

    springboot @PostConstruct无效的解决

    这篇文章主要介绍了springboot @PostConstruct无效的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 详解Java线程池是如何重复利用空闲线程的

    详解Java线程池是如何重复利用空闲线程的

    在Java开发中,经常需要创建线程去执行一些任务,实现起来也非常方便,此时,我们很自然会想到使用线程池来解决这个问题,文中给大家提到使用线程池的好处,对Java线程池空闲线程知识感兴趣的朋友一起看看吧
    2021-06-06
  • @OneToMany查询陷入循环引用的解决方案

    @OneToMany查询陷入循环引用的解决方案

    这篇文章主要介绍了@OneToMany查询陷入循环引用的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java中包装类介绍与其注意事项

    Java中包装类介绍与其注意事项

    Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,所以在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类,有些地方也翻译为外覆类或数据类型类。
    2017-02-02

最新评论