返回顶部
首页 > 资讯 > 精选 >springboot如何自定义异常并捕获异常返给前端
  • 476
分享到

springboot如何自定义异常并捕获异常返给前端

2023-06-25 14:06:11 476人浏览 安东尼
摘要

小编给大家分享一下SpringBoot如何自定义异常并捕获异常返给前端,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!背景在开发中,如果用try catch的方式,

小编给大家分享一下SpringBoot如何自定义异常并捕获异常返给前端,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

背景

开发中,如果用try catch的方式,每个方法都需要单独实现,为了方便分类异常,返回给前端,采用了@ControllerAdvice注解和继承了RuntimeException的方式来实现。

实现内容

捕获了三类异常
1.业务异常

          BusinessException

系统异常 

        SystemException

其他异常

        利用@ExceptionHandler(RuntimeException.class)去捕获

ExceptionAdvice类捕获以上三类异常,并返回自定义类型格式数据

实现代码

业务异常BusinessException类实现方式,继承RuntimeException

public class BusinessException extends  RuntimeException {private String code; public BusinessException() {super();} public BusinessException(String message) {super(message);} public BusinessException(String code, String message) {super(message);this.code = code;} public BusinessException(Throwable cause) {super(cause);} public BusinessException(String message, Throwable cause) {super(message, cause);} public BusinessException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);} public String getCode() {return code;} public void setCode(String code) {this.code = code;} @Overridepublic String getMessage() {return super.getMessage();} @Overridepublic String toString() {return this.code + ":" + this.getMessage();}}

系统异常SystemException类实现方式,继承RuntimeException,同业务异常类的实现方式一样

public class SystemException extends  RuntimeException {private String code; public SystemException() {super();} public SystemException(String message) {super(message);} public SystemException(String code, String message) {super(message);this.code = code;} public SystemException(Throwable cause) {super(cause);} public SystemException(String message, Throwable cause) {super(message, cause);} public SystemException(String message, Throwable cause,                           boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);} public String getCode() {return code;} public void setCode(String code) {this.code = code;} @Overridepublic String getMessage() {return super.getMessage();} @Overridepublic String toString() {return this.code + ":" + this.getMessage();}}

ExceptionAdvice类,采用增强Controller注解 @ControllerAdvice的方式来实现

方法名称和返回类型都可以根据自己需要定义

采用注解@ExceptionHandler,就是捕获的异常类型,我们只需要把需要捕获异常类型写进来就好

springboot如何自定义异常并捕获异常返给前端

 ExceptionAdvice 具体代码实现如下:

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.WEB.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody; @ControllerAdvicepublic class ExceptionAdvice {    public static Logger logger = LoggerFactory.getLogger(ExceptionAdvice.class);     @ResponseBody    @ExceptionHandler(SystemException.class)    public Result handleException(Exception e) {        logger.error("系统异常信息:", e);        Result result = new Result();        if (e instanceof BusinessException) {            e = (BusinessException) e;            result.setCode(((BusinessException) e).getCode());        }        result.setFailed(e.getMessage());        return result;    }     @ExceptionHandler(RuntimeException.class)    @ResponseBody    public Result handleException(RuntimeException e) {        logger.error("异常信息:", e.getMessage());        Result result = new Result();        result.setStatus(500);        result.setMessage(e.getMessage());        return result;    }     @ExceptionHandler(BusinessException.class)    @ResponseBody    public ajaxJSON doBusinessException(Exception e) {        Ajaxjson ajaxJson = new AjaxJson();        logger.error("业务异常消息:", e.getMessage());        ajaxJson.setRet(-1);        ajaxJson.setMsg(e.getMessage());        return ajaxJson;    } }

测试代码

我们捕获一个业务异常BusinessException,输出aaa

springboot如何自定义异常并捕获异常返给前端

 springboot如何自定义异常并捕获异常返给前端

捕获系统异常

throw new SystemException("aaaa");

其他的try catch的异常,这个就可以捕获了 

springboot如何自定义异常并捕获异常返给前端

以上是“springboot如何自定义异常并捕获异常返给前端”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: springboot如何自定义异常并捕获异常返给前端

本文链接: https://lsjlt.com/news/305557.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot如何自定义异常并捕获异常返给前端
    小编给大家分享一下springboot如何自定义异常并捕获异常返给前端,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!背景在开发中,如果用try catch的方式,...
    99+
    2023-06-25
  • springboot 自定义异常并捕获异常返给前端的实现代码
    背景 在开发中,如果用try catch的方式,每个方法都需要单独实现,为了方便分类异常,返回给前端,采用了@ControllerAdvice注解和继承了RuntimeExcepti...
    99+
    2024-04-02
  • 自定义注解和springAOP捕获Service层异常,并处理自定义异常操作
    一 自定义异常 public class NoParamsException extends Exception { //用详细信息指定一个异常 public ...
    99+
    2024-04-02
  • 2011-10-21 自定义异常的捕获
    http://www.itpub.net/thread-1499223-7-1.html 70楼   下列的哪些程序块在执行之后会显示:"Trapped!"   注...
    99+
    2024-04-02
  • 抛出异常时将异常信息返给前端
      全局异常处理器负责将抛出的异常,以统一的格式返给前端。在这里起主要作用的注解是@RestControllerAdvice。 @RestControllerAdvice主要配合@ExceptionHandler使用,统一处理异常情况。 1...
    99+
    2023-09-08
    前端 mybatis java
  • 自定义注解和springAOP捕获Service层异常并处理自定义异常的示例分析
    这篇文章主要为大家展示了“自定义注解和springAOP捕获Service层异常并处理自定义异常的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“自定义注解和springAOP捕获Serv...
    99+
    2023-06-15
  • Java中的自定义异常捕获方式
    目录Java 自定义异常捕获自定义异常类格式如下:自定义异常类的调用格式如下:可能出现异常的代码写法如下:本题完整代码如下:自定义异常Exception根据业务需要不用的异常打印不用类型的日志Java 自定义异常捕获 编写一个程序,将字符串...
    99+
    2016-05-06
    Java异常 自定义异常 异常捕获
  • 如何在 PHP 中捕获和处理自定义异常?
    在 php 中捕获和处理自定义异常的方法:继承 exception 类创建自定义异常。使用 throw 关键字抛出自定义异常。使用 try、catch 和 finally 块捕获和处理异...
    99+
    2024-05-09
    php 自定义异常
  • SpringBoot Security如何自定义异常处理
    这篇文章主要为大家展示了“SpringBoot Security如何自定义异常处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot Security如何自定...
    99+
    2023-06-22
  • springboot如何实现全局异常处理及自定义异常类
    这篇文章主要介绍springboot如何实现全局异常处理及自定义异常类,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!全局异常处理及自定义异常类全局异常处理定义一个处理类,使用@ControllerAdvice注解。@...
    99+
    2023-06-29
  • JavaScript如何自定义异常
    这篇文章给大家分享的是有关JavaScript如何自定义异常的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.概念1.1什么是错误与异常所谓的错误就是编程的过程中使程序不能正常运行的状态,也称为异常。在JavaS...
    99+
    2023-06-21
  • 详解Spring Security 捕获 filter 层面异常返回我们自定义的内容
    通常,我们通过 @ControllerAdvice 和 @ExceptionHandler 来捕获并处理 Controller 层面的异常。但是,filter 是在 controll...
    99+
    2024-04-02
  • 如何在Java中捕获异常
    今天就跟大家聊聊有关如何在Java中捕获异常,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2....
    99+
    2023-06-14
  • 如何动态捕获Python异常
    如何动态捕获Python异常,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在讨论动态捕获异常时让我大吃一惊的是,可以让我找到隐藏的Bug和乐趣。有问题的代码下面...
    99+
    2023-06-17
  • 异常处理:PHP中如何捕获和处理异常?
    异常处理:PHP中如何捕获和处理异常?在PHP开发中,异常处理是非常重要的一环。当程序发生意外情况或错误时,我们需要通过捕获和处理异常来保证程序的正常运行。PHP中提供了一套异常处理的机制,本文将介绍如何在PHP中捕获和处理异常,并提供具体...
    99+
    2023-12-18
    捕获 处理 异常
  • C++ 函数异常处理中如何捕获特定类型的异常?
    c++++ 中捕获特定类型异常的方法:使用 try-catch 块。在 catch 子句中指定要捕获的异常类型,如 catch (const std::runtime_error&...
    99+
    2024-04-15
    异常处理 特定类型异常 c++
  • springboot实现全局异常处理及自定义异常类
    目录全局异常处理及自定义异常类全局异常处理定义一个业务异常的枚举全局异常处理配置springboot Restful使用springboot 返回 ModelAndView全局异常处...
    99+
    2024-04-02
  • SpringBoot Security的自定义异常处理
    目录SpringBoot Security自定义异常access_denied 方面异常Invalid access token 方面异常Bad credentials 方面异常(登...
    99+
    2024-04-02
  • PHP如何自定义异常类
    小编给大家分享一下PHP如何自定义异常类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  class MyE...
    99+
    2024-04-02
  • 如何自定义 PHP 异常类?
    如何自定义 php 异常类?扩展内置 exception 类,创建自定义异常类。在构造函数中传递消息、错误码和前一个异常(可选)。创建针对特定情况的自定义异常,提供更详细的错误消息。 ...
    99+
    2024-05-09
    php 自定义异常类
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作