SpringBoot项目开发(十九):全局异常处理_zhuyu19911016520-CSDN博客

沙海 2021年4月28日12:05:55Java评论24字数 1849阅读6分9秒阅读模式
摘要

SpringBoot项目开发(十九):全局异常处理

文章源自JAVA秀-https://www.javaxiu.com/21225.html

SpringBoot项目开发(十九):全局异常处理

文章源自JAVA秀-https://www.javaxiu.com/21225.html

SpringBoot项目开发(十九):全局异常处理_zhuyu19911016520-CSDN博客文章源自JAVA秀-https://www.javaxiu.com/21225.html

闪耀的瞬间
2018-08-20 16:12:01
SpringBoot项目开发(十九):全局异常处理_zhuyu19911016520-CSDN博客
527

SpringBoot项目开发(十九):全局异常处理_zhuyu19911016520-CSDN博客文章源自JAVA秀-https://www.javaxiu.com/21225.html

收藏


文章源自JAVA秀-https://www.javaxiu.com/21225.html

分类专栏:
spring boot
java
SpringBoot 项目开发
文章标签:
全局异常处理 文章源自JAVA秀-https://www.javaxiu.com/21225.html

版权 文章源自JAVA秀-https://www.javaxiu.com/21225.html

文章源自JAVA秀-https://www.javaxiu.com/21225.html

团队写的代码偶尔会有漏洞的地方,用户访问报错后直接把一大堆错误信息呈现给用户是不太友好的,为了更友好,往往会捕获全局异常,统一跳转到一个友好的错误页面文章源自JAVA秀-https://www.javaxiu.com/21225.html

SpringMVC提供一个 HandlerExceptionResolver 接口,全局异常处理器实现此接口即可文章源自JAVA秀-https://www.javaxiu.com/21225.html

1.新建一个全局异常处理类,GlobalExceptionResolver.java,实现HandlerExceptionResolver接口 文章源自JAVA秀-https://www.javaxiu.com/21225.html

@Component
public class GlobalExceptionResolver implements HandlerExceptionResolver{

    private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:sss");
    private static StringBuilder sb = new StringBuilder();

    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        //错误信息
        wirte("异常时间:"+ dateFormat.format(new Date()));
        wirte("请求地址:"+ httpServletRequest.getRequestURL());
        wirte("错误原因:"+ e.toString());
        //详细异常
        sb.setLength(0);
        StackTraceElement[] error = e.getStackTrace();
        for (StackTraceElement stackTraceElement : error) {
            sb.append(stackTraceElement.toString()+"\n");
        }
        wirte("详细原因:"+ sb.toString());
        //返回统一错误页面
        return new ModelAndView("error");
    }
    //打印到控制台
    void wirte(String msg){
        System.out.println(msg);
    }
}
123456789101112131415161718192021222324252627

以上同样适用于SpringMvc项目,只不过需要配置一个bean文章源自JAVA秀-https://www.javaxiu.com/21225.html

<!--配置异常对象处理器  该类要实现HandlerExceptionResolver接口  -->
<bean class="com.zypcy.expend.interceptor.GlobalExceptionResolver"></bean>
12

2.新建统一错误页面 error.html ,展示一个 gif 的动画 文章源自JAVA秀-https://www.javaxiu.com/21225.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>您访问的页面报错啦</title>
</head>
<body>
    <div style="text-align: center;">
        <img src="/images/error.gif" style="width: 1366px;height: 768px;"/>
    </div>
</body>
</html>
123456789101112

######3.在控制器中创建一个action,手动写一个异常,没有异常返回index页面,发生异常后是否返回统一异常error页面文章源自JAVA秀-https://www.javaxiu.com/21225.html

    //测试全局异常
    @RequestMapping("/testException")
    public String testGlobalException(){
        String str = null;
        if(str.equals("123")){

        }
        return "index";
    }
123456789

启动项目,访问 /testException ,结果如下: SpringBoot项目开发(十九):全局异常处理_zhuyu19911016520-CSDN博客文章源自JAVA秀-https://www.javaxiu.com/21225.html

再看Ide的Console控制台的输出信息,打印出异常时间、请求地址等等信息 SpringBoot项目开发(十九):全局异常处理_zhuyu19911016520-CSDN博客文章源自JAVA秀-https://www.javaxiu.com/21225.html

通过全局异常,把异常信息统一保存到监控系统中,通过监控系统可以很好的判断系统是否健康运转,及时修复bug文章源自JAVA秀-https://www.javaxiu.com/21225.html

下篇 Caffeine本地缓存文章源自JAVA秀-https://www.javaxiu.com/21225.html

文章源自JAVA秀-https://www.javaxiu.com/21225.html

文章源自JAVA秀-https://www.javaxiu.com/21225.html

继续阅读
速蛙云 - 极致体验,强烈推荐!!!购买套餐就免费送各大视频网站会员!快速稳定、独家福利社、流媒体稳定解锁!速度快,全球上网、视频、游戏加速、独立IP均支持!基础套餐性价比很高!这里不多说,我一直正在使用,推荐购买:https://www.javaxiu.com/59919.html
weinxin
资源分享QQ群
本站是JAVA秀团队的技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定