SpringBoot项目如何实现全局异常捕获

简介: SpringBoot项目如何实现全局异常捕获

写在前面


在规范好的项目组中进行工作,一般都是有着很严格的开发规范的,比如编码上的规范,在某些位置要固定的去抛出异常,日志的输出规范等等等,很多很多的规范,往往给没有养成好的开发习惯的人们造成很大的困扰。


今天我要给大家分享的就是异常的全局化处理问题。


SpringBoot项目如何实现全局异常捕获


SpringBoot项目中要想去实现全局异常捕获,无非就是利用两个关键性的注解来实现。


那就是@ControllerAdvice注解 和 @ExceptionHandler注解。


@ControllerAdvice:增强版的Controller注解,一般都是声明全局性的功能,比如实现全局异常处理,或者是全局数据绑定,亦或者是全局数据预处理等等的。


@ExceptionHandler:统一处理某一类异常,其中可以指定某一类异常的class,使用该注解,可以让处理某类异常的时候更方便些。


而这两个注解如何配合使用才能处理全局的异常呢,来看一下相关的代码吧。


首先创建一个类,代码如下:

public class GlobalExceptionHandle {
}


加入@ControllerAdvice注解,代码如下:

@ControllerAdvice
public class GlobalExceptionHandle {
}


声明了全局性的类之后,再让我们加入异常的捕获注解@ExceptionHandler。

@ControllerAdvice
public class GlobalExceptionHandle {
    /***
     * 404处理
     * @return
     */
    @ExceptionHandler(NoHandlerFoundException.class)
    public String notFountHandler(HttpServletRequest request, HttpServletResponse response, Model model, NoHandlerFoundException e) throws IOException, JSONException {
        String servletPath = request.getServletPath();
        String msg = "未找到路径:" + servletPath;
        return msg;
    }
}


如上代码,我们就加入了404异常的处理,我们也可以加入空指针的异常处理,如下代码:

@ControllerAdvice
public class GlobalExceptionHandle {
    /***
     * 404处理
     * @return
     */
    @ExceptionHandler(NoHandlerFoundException.class)
    public String notFountHandler(HttpServletRequest request, HttpServletResponse response, Model model, NoHandlerFoundException e) throws IOException, JSONException {
        String servletPath = request.getServletPath();
        String msg = "未找到路径:" + servletPath;
        return msg;
    }
    /***
     * 404处理
     * @return
     */
    @ExceptionHandler(NullPointerException.class)
    public String notFountHandler(HttpServletRequest request, HttpServletResponse response, Model model, NoHandlerFoundException e) throws IOException, JSONException {
        String servletPath = request.getServletPath();
        String msg = "空指针了:" + servletPath;
        return msg;
    }
}


这样我们就可以实现了全局异常的捕获了,是不是很简单,快去试试吧。


相关文章
Springboot 全局异常捕获以及统一接口返回结果
Springboot 全局异常捕获以及统一接口返回结果
279 0
|
运维 Java 应用服务中间件
springboot 最简单的日志打印,输出日志文件 及全局异常捕获处理
springboot 最简单的日志打印,输出日志文件 及全局异常捕获处理
855 0
springboot 最简单的日志打印,输出日志文件 及全局异常捕获处理
|
Java 容器 Spring
SpringBoot实现全局异常捕获
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82711354 ...
2183 0
|
4天前
|
SQL JavaScript 前端开发
vue中使用分页组件、将从数据库中查询出来的数据分页展示(前后端分离SpringBoot+Vue)
这篇文章详细介绍了如何在Vue.js中使用分页组件展示从数据库查询出来的数据,包括前端Vue页面的表格和分页组件代码,以及后端SpringBoot的控制层和SQL查询语句。
vue中使用分页组件、将从数据库中查询出来的数据分页展示(前后端分离SpringBoot+Vue)
|
3天前
|
前端开发 JavaScript Java
SpringBoot+Vue+token实现(表单+图片)上传、图片地址保存到数据库。上传图片保存位置自己定义、图片可以在前端回显(一))
这篇文章详细介绍了在SpringBoot+Vue项目中实现表单和图片上传的完整流程,包括前端上传、后端接口处理、数据库保存图片路径,以及前端图片回显的方法,同时探讨了图片资源映射、token验证、过滤器配置等相关问题。
|
3天前
|
前端开发 数据库
SpringBoot+Vue+token实现(表单+图片)上传、图片地址保存到数据库。上传图片保存位置到项目中的静态资源下、图片可以在前端回显(二))
这篇文章是关于如何在SpringBoot+Vue+token的环境下实现表单和图片上传的优化篇,主要改进是将图片保存位置从磁盘指定位置改为项目中的静态资源目录,使得图片资源可以跨环境访问,并在前端正确回显。
|
3天前
|
前端开发 数据库
SpringBoot+Vue实现商品不能重复加入购物车、购物车中展示商品的信息、删除商品重点提示等操作。如何点击图片实现图片放大
这篇文章介绍了如何在SpringBoot+Vue框架下实现购物车功能,包括防止商品重复加入、展示商品信息、删除商品时的提示,以及点击图片放大的前端实现。
SpringBoot+Vue实现商品不能重复加入购物车、购物车中展示商品的信息、删除商品重点提示等操作。如何点击图片实现图片放大
|
4天前
|
JSON JavaScript 前端开发
基于SpringBoot + Vue实现单个文件上传(带上Token和其它表单信息)的前后端完整过程
本文介绍了在SpringBoot + Vue项目中实现单个文件上传的同时携带Token和其它表单信息的前后端完整流程,包括后端SpringBoot的文件上传处理和前端Vue使用FormData进行表单数据和文件的上传。
15 0
基于SpringBoot + Vue实现单个文件上传(带上Token和其它表单信息)的前后端完整过程
|
4天前
|
JavaScript 前端开发 easyexcel
基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程
本文展示了基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的完整过程,包括后端使用EasyExcel生成Excel文件流,前端通过Blob对象接收并触发下载的操作步骤和代码示例。
21 0
基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程
|
4天前
|
数据库
elementUi使用dialog的进行信息的添加、删除表格数据时进行信息提示。删除或者添加成功的信息提示(SpringBoot+Vue+MybatisPlus)
这篇文章介绍了如何在基于SpringBoot+Vue+MybatisPlus的项目中使用elementUI的dialog组件进行用户信息的添加和删除操作,包括弹窗表单的设置、信息提交、数据库操作以及删除前的信息提示和确认。
elementUi使用dialog的进行信息的添加、删除表格数据时进行信息提示。删除或者添加成功的信息提示(SpringBoot+Vue+MybatisPlus)