SpringBoot统一收集异常信息并返回给前端

这篇具有很好参考价值的文章主要介绍了SpringBoot统一收集异常信息并返回给前端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

适用场景

实现方法

结合Servlet对象

@RestControllerAdvice


适用场景

通常前后端交互时,后端对前端参数进行校验后,对于校验不通过的信息会自定义一个异常抛出,但是后端一旦抛出异常,后台接口服务就会报500的错误

SpringBoot统一收集异常信息并返回给前端SpringBoot统一收集异常信息并返回给前端对于有些逻辑错误而言,我们只是想将此信息提示给用户,这时候我们需要将抛出来的异常进行捕获,然后封装成提示信息返回给前端,最常见的就是try catch。

@RequestMapping("/test")
    public String test() {
        try {
            throw new RuntimeException("出错了。。。。");
        }catch (Exception ex){
            return ex.getMessage();
        }
    }

SpringBoot统一收集异常信息并返回给前端

 与前端的交互在controller层,也就意味着我们每个controller方法都要加一个try catch,这样太冗余了,所以我们采用一个统一收集处理异常的方法,来将异常返回。

实现方法

SpringBoot提供了一个很好用的注解,@RestControllerAdvice @ExceptionHandler

package com.example.springboot;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;


@RestControllerAdvice
public class CommonController {
    @ExceptionHandler(Exception.class)
    public String handleException(Exception ex) {
        return ex.getMessage();
    }
}

我们增加了一个统一处理前端返回信息的类,即便业务controller方法里面没有try catch,还是可以通过@ExceptionHandler进行捕获并返回(这里指定的是所有异常Exception,可以根据不同异常的返回结果,进行细化处理)。

SpringBoot统一收集异常信息并返回给前端SpringBoot统一收集异常信息并返回给前端

结合Servlet对象

上述示例只是简单返回一个字符串,通常在项目里,我们是通过HttpServletRequest对象HttpServletResponse对象来接收和返回数据的,我们同样可以在异常捕获方法上增加相应的参数,保证和业务处理方法的一致性。

package com.example.springboot;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@RestControllerAdvice
public class CommonController {
   
    /**
     * 对各种异常统一返回
     */
    @ExceptionHandler(value = Exception.class)
    public void index(HttpServletRequest request, HttpServletResponse response,Exception ex) {
        //将返回信息写入response
    }
}

@RestControllerAdvice

@RestControllerAdvice对异常处理只是其中一个作用,注解了@RestControllerAdvice的类的方法可以使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上。

@InitBinder可以对WebDataBinder对象进行初始化,在前后端交互时,经常会遇到表单中的日期字符串和JavaBean的Date类型的转换,通过这个方法可以对前端穿过来的日期字符串进行统一的格式化处理,无需在每个方法中进行转换。

@ModelAttribute主要的作用是将数据添加到模型对象中。

    @RequestMapping("/hello")
    public String hello(Model model) {

        return model.getAttribute("attributeName").toString();
    }
package com.example.springboot;

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@RestControllerAdvice
public class CommonController {

    @ModelAttribute
    public void populateModel(Model model) {
        model.addAttribute("attributeName", "统一返回");
    }


}

SpringBoot统一收集异常信息并返回给前端

 文章来源地址https://www.toymoban.com/news/detail-405346.html

 

 

到了这里,关于SpringBoot统一收集异常信息并返回给前端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Spring Boot 统一功能处理(拦截器实现用户登录权限的统一校验、统一异常返回、统一数据格式返回)

    Spring Boot 统一功能处理(拦截器实现用户登录权限的统一校验、统一异常返回、统一数据格式返回)

    目录 1. 用户登录权限校验 1.1 最初用户登录权限效验 1.2 Spring AOP 用户统⼀登录验证 1.3 Spring 拦截器 (1)创建自定义拦截器 (2)将自定义拦截器添加到系统配置中,并设置拦截的规则 1.4 练习:登录拦截器 (1)实现 UserController 实体类 (2)返回的登录页面:login.html (3)实

    2024年02月12日
    浏览(21)
  • Spring Boot 优雅实现统一数据返回格式+统一异常处理+统一日志处理

    Spring Boot 优雅实现统一数据返回格式+统一异常处理+统一日志处理

            在我们的项目开发中,我们都会对数据返回格式进行统一的处理,这样可以方便前端人员取数据,当然除了正常流程的数据返回格式需要统一以外,我们也需要对异常的情况进行统一的处理,以及项目必备的日志。         在项目开发中返回的是json格式的数据

    2024年01月19日
    浏览(13)
  • 【Spring Boot】拦截器与统一功能处理:统一登录验证、统一异常处理与统一数据返回格式

    【Spring Boot】拦截器与统一功能处理:统一登录验证、统一异常处理与统一数据返回格式

     Spring AOP是一个基于面向切面编程的框架,用于将横切性关注点(如日志记录、事务管理)与业务逻辑分离,通过代理对象将这些关注点织入到目标对象的方法执行前后、抛出异常或返回结果时等特定位置执行,从而提高程序的可复用性、可维护性和灵活性。但使用原生Sp

    2024年02月16日
    浏览(11)
  • 【Spring Boot统一功能处理】统一异常处理,统一的返回格式,@ControllerAdvice简单分析,即将走进SSM项目的大门! ! !

    【Spring Boot统一功能处理】统一异常处理,统一的返回格式,@ControllerAdvice简单分析,即将走进SSM项目的大门! ! !

    前言: 大家好,我是 良辰丫 ,在上一篇文章中我们已经学习了一些统一功能处理的相关知识,今天我们继续深入学习这些知识,主要学习统一异常处理,统一的返回格式,@ControllerAdvice简单分析.💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:javaEE进阶篇之框架学习 🍎励志语句:生

    2024年02月16日
    浏览(12)
  • 信息收集-目录扫描(7kbscan御剑版)下载及使用

    信息收集-目录扫描(7kbscan御剑版)下载及使用

    例如:第二章-7kbscan御剑版 文章目录 前言 一、7kbscan御剑版          下载地址 二、使用步骤 1.引入库 2.读入数据 总结 提示: Web路径暴力探测工具-7kbscan御剑版 提示:以下是本篇文章正文内容,下面案例可供参考 下载地址 :  GitHub - 7kbstorm/7kbscan-WebPathBrute: 7kbscan-WebPath

    2024年02月13日
    浏览(8)
  • springboot全局统一返回处理

    项目中一般都会有规定好的接口返回格式,无论成功与失败,一般格式都是不变的,这样是为了方便前后端统一处理,今天就来说下前后端统一处理的较为优雅的方式; 一般而言都会有一个统一的返回类作为接口的返回数据的封装,例如: 然后我们通过此类作为返回参数的统一封装

    2024年02月13日
    浏览(5)
  • 一站式统一返回值封装、异常处理、异常错误码解决方案—最强的Sping Boot接口优雅响应处理器

    作者:京东物流 覃玉杰 Graceful Response是一个Spring Boot体系下的优雅响应处理器,提供一站式统一返回值封装、异常处理、异常错误码等功能。 使用Graceful Response进行web接口开发不仅可以节省大量的时间,还可以提高代码质量,使代码逻辑更清晰。 强烈推荐你花3分钟学会它!

    2024年02月03日
    浏览(9)
  • Springboot 中设置统一的返回格式

    在我们应用中我们通常与前端交互使用json 格式,设置统一的返回json 格式是非常必要的,可以减少开发人员的工作量。 第一个使用统一的消息转换器,这里使用jackson 的相关功能,引入jar 创建一个全局配置类(GlobalConfig)并使用 @Configuration 注解标记该类为配置类。然后,在

    2024年01月25日
    浏览(9)
  • springboot统一拦截包装接口返回值

    1、作用 代替手动封装每个接口的返回值,否则每个有返回值的controller接口,都需要手动使用Resonse类包装返回结果 2、实现 方法返回值handler,需要实现接口HandlerMethodReturnValueHandler,并重写supportsReturnType和handleReturnValue方法。只有在supportsReturnType方法返回值为true的情况下才会

    2024年02月13日
    浏览(6)
  • Springboot 设置统一的请求返回格式

    现在开发过程中主要采用前后端分离的方式进行开发测试,也就是前端封装请求,后端提供标准的API接口服务。一般现在json 格式受到开发者们的青睐,学习过程中我们可以设置接口的返回类型,那么怎么做到设置统一的返回格式呢?以下是在项目开发过程中一般的模式标准

    2024年02月13日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包