专栏首页指缝阳光SpringBoot——全局异常捕获和自定义异常

SpringBoot——全局异常捕获和自定义异常

一、概述

介绍: 在我们开发项目的时候,有时候发生的异常是我们没有预料到的,则异常显示就会是Springboot的自定义显示。这样在使用来说很不友好,因此我们需要一个全局异常的捕获,进行一个格式化的输出,或者也可以预先定义我们自己的异常。以此实现对异常的优雅处理。(我此处只展示前后端分离的情况,返回json数据)

二、自定义异常

介绍: 自定义异常需要继承Exception或者RuntimeException,然后在异常处理器中进行执行异常的处理。代码如下:

/**
 * 自定义异常:业务异常
 *
 * @Author: xjf
 * @Date: 2019/12/1 22:20
 */
public class BusinessException extends RuntimeException {
    /**
     * 存放具体的异常信息
     */
    private String message;

    public BusinessException(String message) {

        this.message = message;
    }

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

三、统一异常处理

**介绍:**此处需要一个全局异常的捕获处理,同时可以加入指定异常的自定义处理。

/**
 * 自定义异常处理
 *
 * @Author: xjf
 * @Date: 2019/12/1 22:14
 */
@RestControllerAdvice
public class CustomExceptionHandler {
    private Logger log = LoggerFactory.getLogger(CustomExceptionHandler.class);

    /**
     * 捕获全局异常,处理所有不可知的异常
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    public ReturnResult handleGlobalException(Exception e){
        log.error("出现全局异常错误:{}", e.getMessage());

        e.printStackTrace();

        return ReturnResult.error(e.getMessage(), ReturnMsg.EXCEPTION1.getCode(),ReturnMsg.EXCEPTION1.getMsg());
    }

    /**
     * 捕获自定义异常
     * @param e
     * @return
     */
    @ExceptionHandler(BusinessException.class)
    public ReturnResult handleMyException(BusinessException e){
        log.error("出现自定义异常错误:{}", e.getMessage());

        e.printStackTrace();

        return ReturnResult.error(e.getMessage(), ReturnMsg.EXCEPTION5.getCode(), ReturnMsg.EXCEPTION5.getMsg());
    }
}

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python自定义异常捕获异常处理异常

    用户7886150
  • Python异常捕获及自定义异常类

    异常是一个与业务逻辑无关的BUG,一个潜在错误或者网络错误事件等,如:尚未实现的函数,缩进错误,Python语法错误等.该事件可能会在程序执行过程中发生,影响程...

    Python碎片公众号
  • SpringBoot之SpringBoot整合全局捕获异常

      为什么需要添加全局捕获异常呢?因为系统在运行时很多时候会因为不确定的因素会出现异常,会将错误直接显示到页面上,当然这对于开发人员看来是很好的,但是对于用户来...

    彼岸舞
  • 自定义异常并抛出,捕获

    skylark
  • C# WinForm捕获全局异常

    跟着阿笨一起玩NET
  • C# WinForm捕获全局异常

    跟着阿笨一起玩NET
  • springboot中全局异常捕获类的写法

    贪挽懒月
  • Winform 全局异常捕获处理

    我们在开发winform程序的时候经常需要处理异常,如果没处理好异常程序就会崩溃,影响用户体验。 所以防止程序在没处理到异常时能由一个全局的异常捕获处理,在w...

    SpringSun
  • 【快学springboot】5.全局异常捕获,异常流处理业务逻辑

    上一篇文章说到,参数校验,往往需要和全局的异常拦截器来配套使用,使得返回的数据结构永远是保持一致的。参数异常springboot默认的返回结构:

    Happyjava
  • mvc自定义全局异常处理

      异常信息处理是任何网站必不可少的一个环节,怎么有效显示,记录,传递异常信息又成为重中之重的问题。本篇将基于上篇介绍的html2cancas截图功能,实现mv...

    用户1168362
  • SpringBoot-08-之统一化json输出与自定义异常捕获

    张风捷特烈
  • 前端异常捕获和定位

    开发阶段,通过详细的报错信息,我们可以快速定位并解决问题。在生产,通过异常监控,根据异常埋点信息,我们可以第一时间知道异常信息,不至于造成严重后果。

    GopalFeng
  • 异常1.异常简介2.捕获异常3.异常的传递4.抛出自定义的异常 5.异常处理中抛出异常

    打开一个不存在的文件123.txt,当找不到123.txt文件时,就会抛出给我们一个IOError类型的错误,No such file or directory...

    Python攻城狮
  • SpringBoot 全局异常配置及返回自定义页面

    山海散人
  • express捕获全局异常的三种方法

    express的路由里抛出异常后,全局中间件没办法捕获,需要在所有的路由函数里写try catch,这坑爹的逻辑让人每次都要多写n行代码 官方错误捕获中件间代...

    雪山飞猪
  • Configure、中间件与ErrorHandlingMiddleware全局异常捕获

      Startup.cs中的Configure方法主要是http处理管道配置、中间件和一些系统配置,其中

    小世界的野孩子
  • SpringBoot统一异常处理BasicErrorController定义全局异常处理类:并用@ControllerAdvice注解自定义异常类,继承Exception(或RuntimeExcept

    JavaEdge
  • python自定义异常处理_Python 自定义异常

    Python有许多内置的异常,当其中的某些错误出现时,它们会强制您的程序输出错误。

    用户7886150
  • 自定义异常

    sr

扫码关注云+社区

领取腾讯云代金券