springboot如何添加全局异常捕获类

 更新时间:2020年01月13日 08:52:03   作者:足下之路  
这篇文章主要介绍了springboot如何添加全局异常捕获类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了springboot如何添加全局异常捕获类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

前几天工作中遇到一个项目,前后端分离的,作为后端开发专注开发接口。对于程序中出现的异常如果不进行处理,将报错信息直接返回到前端十=时不优雅的,因此需要对异常进行捕获和处理,但是每个接口都单独处理异常则显得代码十分臃肿,因此写了个异常捕获类对全局出现的异常进行统一处理。

1.如果程序中出现异常如下:

@RestController
public class HelloController {

  @RequestMapping("/hello")
  public String hello(String idNum) {
     
    throw new BusinessException("抛出业务异常");
    
  }
}

2.全局异常处理类:

//@ControllerAdvice 该注解定义全局异常处理类
@ControllerAdvice
public class GlobalExceptionHandler {

  //@ExceptionHandler 该注解声明异常处理方法
  //value=BusinessException.classb表示处理抛出的BusinessException异常
  @ExceptionHandler(value = BusinessException.class) 
  public ReturnResult defaultErrorHandler(HttpServletRequest req, Exception e) {
    ReturnResult result = new ReturnResult(); //出现异常后返回到前端的信息
    result.setCode("-1");
    result.setMsg("出现了业务异常");
    //打印异常信息
   logger.error("调用失败", e);
    
   return result;
  }
}

3.访问/hello资源时被2中捕获BusinessException异常的类捕获,并返回前端数据{"code":"-1", "message":"出现业务异常"}, 日志打印信息如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 快速校验实体类时,@Valid,@Validated,@NotNull注解无效的解决

    快速校验实体类时,@Valid,@Validated,@NotNull注解无效的解决

    这篇文章主要介绍了快速校验实体类时,@Valid,@Validated,@NotNull注解无效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 浅谈Java绝对布局

    浅谈Java绝对布局

    这篇文章主要介绍了Java当中的绝对布局,还举了一个简单的实例,需要的朋友可以参考下。
    2017-08-08
  • java检查服务器的连通两种方法代码分享

    java检查服务器的连通两种方法代码分享

    这篇文章主要介绍了java检查服务器的连通两种方法代码分享,涉及ping的介绍以及检查服务器连通的两种方法代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 基于Java实现中文分词系统的示例代码

    基于Java实现中文分词系统的示例代码

    这篇文章主要为大家详细介绍了如何利用Java语言实现一个简易的中文分词系统,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-07-07
  • Linux下启动jar包的几种常见方式

    Linux下启动jar包的几种常见方式

    最近在linux上发布了一个SpringBoot项目,研究了一下jar包在Linux上的集中启动方式,这篇文章主要给大家介绍了Linux下启动jar包的几种常见方式,需要的朋友可以参考下
    2023-07-07
  • java ArrayList和Vector的区别详解

    java ArrayList和Vector的区别详解

    这篇文章主要介绍了java ArrayList和Vector的区别详解的相关资料,并附简单实例代码,需要的朋友可以参考下
    2016-11-11
  • 详解java中命令行模式的实现

    详解java中命令行模式的实现

    命令模式是一种行为设计模式,它允许您将请求封装为对象,以便您可以将其参数化、队列化、记录和撤销,本文主要为大家介绍一下java实现命令模式的示例代码,需要的可以参考下
    2023-09-09
  • 详解springboot中各个版本的redis配置问题

    详解springboot中各个版本的redis配置问题

    这篇文章主要介绍了详解springboot中各个版本的redis配置问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Spring boot学习教程之快速入门篇

    Spring boot学习教程之快速入门篇

    这篇文章主要给大家介绍了关于Spring boot的相关资料,本文属于基础入门教程,对各位学习Spring boot的新手们具有一定的参考学习价值,,要的朋友们下面来一起看看吧。
    2017-04-04
  • 轻量级声明式的Http库——Feign的独立使用

    轻量级声明式的Http库——Feign的独立使用

    这篇文章主要介绍了轻量级声明式的Http库——Feign的使用教程,帮助大家更好的理解和学习使用feign,感兴趣的朋友可以了解下
    2021-04-04

最新评论