SpringMVC统一异常处理

统一异常拦截处理方式

项目中不可避免会出现一些异常情况,而一个web项目,若不拦截异常,糟糕的情况下可能直接将堆栈抛给前端,从而导致各种鬼畜的问题

I. 借助@ControllerAdvice拦截异常

给一个简单的demo,便可以很容易的了解这种手段如何处理了

@ControllerAdvice
@Slf4j
@ResponseBody
public class ActionExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    public String defaultHandler(HttpServletRequest request, Exception e) {
        log.error("unexpected exception! request: {}, params: {} refer: {}, e: {}",
                request.getRequestURI(),
                request.getParameterMap(),
                request.getHeader("referer"),
                e);

        if (StringUtils.isBlank(e.getMessage())) {
            return ResponseWrapper.errorReturn(new Status(500, "内部异常"));
        } else {
            return ResponseWrapper.errorReturn(new Status(500, e.getMessage()));
        }
    }
}

这里主要借助两个注解来实现,ControllerAdvice 和 ExceptionHandler

II. 其他

声明

尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见解不全,如有问题,欢迎批评指正

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏岑玉海

Carbondata源码系列(一)文件生成过程

在滴滴的两年一直在加班,人也变懒了,就很少再写博客了,最近在进行Carbondata和hive集成方面的工作,于是乎需要对Carbondata进行深入的研究。 ...

5736
来自专栏分布式系统进阶

Librdkafka的操作处理队列

2282
来自专栏码匠的流水账

聊聊kafka client chunkQueue 与 MaxLag值

前面一篇文章讨论了ConsumerFetcherManager的MaxLag与ConsumerOffsetChecker的lag值的区别。但是关于MaxLag的...

821
来自专栏编码小白

ofbiz实体引擎(九) 多租户

多租户在平台中是根据delegator不同操作不同的数据库 /** * @author 郑小康 * 设置完整的delegator 其可...

3344
来自专栏大内老A

为ASP.NET MVC创建一个基于Unity的ControllerFactory

谈到IoC和ASP.NET的集成,很多人会先后想到Ninject,不过我们个人还是倾向于Unity。这篇文章简单地介绍如果创建基于Unity的Controlle...

1897
来自专栏闵开慧

Mapreduce任务实现邮件监控

Mapreduce任务实现邮件监控     这里主要使用Java自带邮件类实现Mapreduce任务的监控,如果Mapreduce任务报错则发送报错邮件。Map...

3308
来自专栏偏前端工程师的驿站

JS魔法堂:深究JS异步编程模型

前言  上周5在公司作了关于JS异步编程模型的技术分享,可能是内容太干的缘故吧,最后从大家的表情看出“这条粉肠到底在说啥?”的结果:(下面是PPT的讲义,具体的...

2566
来自专栏alexqdjay

Springboot 随笔(2)-- Properties 配置一坑

2867
来自专栏wannshan(javaer,RPC)

dubbo监控机制之监控中心实现分析

这里的监控中心以dubbo-ops\dubbo-monitor-simple项目说 总的来说是监控中心启动一个sevlet容器,通过web页面向用户多维度的展...

1.1K6
来自专栏大内老A

通过一个模拟程序让你明白ASP.NET MVC是如何运行的

ASP.NET MVC的路由系统通过对HTTP请求的解析得到表示Controller、Action和其他相关的数据,并以此为依据激活Controller对象,调...

2876

扫码关注云+社区