SpringBoot初级开发--整体应用的统一性异常管理(7)

这篇具有很好参考价值的文章主要介绍了SpringBoot初级开发--整体应用的统一性异常管理(7)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


  在整个系统中,通常会要求有统一性的异常抛出,统一的异常格式,统一的异常界面,而不是把整个堆栈错误信息抛出,这样对整个系统的安全性以及错误定位都非常不好,接下来我们紧接上一章的源码,加上统一异常。

1.创建全局异常处理类

注解@ControllerAdvice表示这是一个控制器增强类,当控制器发生异常且符合类中定义的拦截异常类,将会被拦截,现在我们定义一个名为CommException的统一异常类和一个CommExceptionHandler 的异常处理类

package com.example.firstweb.exception;


import com.example.firstweb.util.Constants;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice
public class CommExceptionHandler {

    @ExceptionHandler(value = CommException.class)
    @ResponseBody
    public ErrorData errorHandler(CommException ex){
        Constants.LOG_ACCESS_INFO.error("");
        ErrorData errors=new ErrorData();
        errors.setErrCode(ex.getErrorCode());
        errors.setErrMsg(ex.getMsg());
        return errors;
    }

}
package com.example.firstweb.exception;

public class CommException extends RuntimeException {
    /**
     *
     */
    private static final long serialVersionUID = 7792336437477580246L;
    /* 异常码 */
    private int errorCode;
    /* 异常描述 */
    private String msg;


    public CommException(String msg) {
        super();
        this.msg = msg;
    }

    public CommException(Integer code, String msg){
        super(msg);
        this.errorCode = code;
        this.msg = msg;
    }

    public int getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(int errorCode) {
        this.errorCode = errorCode;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

2.增加统一异常返回结果类

有了上面的两个类后,我们就要返回统一的结果给界面了,可以是JSON格式的字符串,也可以是一个完美的统一出错界面视图。这里我们用的是统一json报错
package com.example.firstweb.exception;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonInclude(JsonInclude.Include.NON_EMPTY) // 空值不序列化2.x
public class ErrorData {
    // 错误返回
    @JsonProperty(value = "err_code")
    private Integer errCode;
    @JsonProperty(value = "err_msg")
    private String errMsg;

    public Integer getErrCode() {
        return errCode;
    }

    public void setErrCode(Integer errCode) {
        this.errCode = errCode;
    }

    public String getErrMsg() {
        return errMsg;
    }

    public void setErrMsg(String errMsg) {
        this.errMsg = errMsg;
    }

}

接下来,我们建立一个测试的controller来抛出这个CommException 异常

package com.example.firstweb.controller;

import com.example.firstweb.exception.CommException;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestExceptionController {

    @GetMapping("/commExcetion")
    public CommException commExcetion(){
        throw new CommException(111,"comm exceptiong");
    }
}

接下来,我们把整个工程运行起来。直接访问http://localhost:8088/commExcetion,返回下面的一个统一的JSON报错
SpringBoot初级开发--整体应用的统一性异常管理(7),JAVA,springboot,spring boot,spring,java,java-ee
源代码可以在这里获得链接: https://pan.baidu.com/s/1oNRHU6E1PxFvD-af27OU3g 提取码: 8wwq文章来源地址https://www.toymoban.com/news/detail-685952.html

到了这里,关于SpringBoot初级开发--整体应用的统一性异常管理(7)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • SpringBoot初级开发--加入Log4j进行日志管理打印(6)

      日志记录在整个java工程开发中占着很重要的比重,因为很多问题的排查需要通过日志分析才能确认。在SpringBoot中我用得最多的就是log4j这个日志框架。接下来我们具体配置log4j.   log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从高到低依次为:

    2024年02月11日
    浏览(43)
  • 【大模型应用开发教程】04_大模型开发整体流程 & 基于个人知识库的问答助手 项目流程架构解析

    项目仓库地址 项目学习地址 定义 将 开发以LLM为功能核心 ,通过LLM的强大理解能力和生成能力,结合特殊的数据或业务逻辑来提供独特功能的应用。 核心点 通过调用 API 或开源模型来实现核心的理解与生成 通过 Prompt Enginnering 来实现大语言模型的控制 在大模型开发中,我们

    2024年02月05日
    浏览(38)
  • 电磁场与电磁波(7)——唯一性定理的应用:镜像法

    镜像法是用一组适当配置的电荷系统来替代要求解的给定系统。 根据唯一性定理,只要新添加的电荷(镜像电荷)不进入原求解区域,以保证不改变原求解区域内的电荷分布,就能保证不改变原求解区域内的电位方程,并且原区域边界处的条件保持不变就可满足要求。 镜像

    2024年02月08日
    浏览(33)
  • Linux设备模型统一:桥接硬件多样性与应用程序开发的关键

    在Linux的宏大世界中,各种各样的硬件设备如星辰般繁多。从常见的USB设备到复杂的网络接口卡,从嵌入式设备到强大的服务器,Linux需要在这些差异极大的硬件上运行。这就引出了一个问题:Linux是如何统一这些不同硬件的设备模型的呢?本文将探讨Linux是如何针对不同的硬

    2024年04月10日
    浏览(36)
  • 多端统一开发框架Taro、UniApp和WeApp这三个应用各自在前端开发领域有着独特的定位和功能

    Taro、UniApp和WeApp这三个应用各自在前端开发领域有着独特的定位和功能,下面是对它们的详细介绍以及三者之间的对比,包括各自的优缺点和社区维护支持程度。 一、应用介绍 Taro Taro是一个多端统一开发框架,支持使用React语法编写一次代码,生成多个平台的应用。它旨在提

    2024年04月22日
    浏览(28)
  • 整体认识和路由配置、基础数据渲染、热榜区域实现、图片预览组件封装、认识SKU组件、通用组件统一注册全局(详情页)【Vue3】

    整体业务认识 路由配置 准备组件模板 配置路由 绑定模板测试跳转 封装接口 获取数据渲染模版 思考:渲染模版时遇到对象的多层属性访问可能出现什么问题? 模块实现整体分析 结论:两块热榜相比, 结构一致,标题title和列表内容不同 渲染基础热榜数据 1- 准备模版 2- 封

    2024年02月15日
    浏览(33)
  • springboot开发PC端桌面应用

     一、需求描述: 1、要求桌面能在window、Linux和macos系统上运行 2、用户自定义数据筛选策略,策略可通过excel导入导出 3、选择多个excel文件通过策略过滤生成新的excel 二、技术选型及集成环境配置: 1、PC端跨平台直接选用javafx来作为桌面开发 2、动态数据规则使用drools以及内

    2024年02月11日
    浏览(48)
  • SpringBoot统一异常处理和统一返回格式

    上篇博客我们讲解了使用AOP来进行统一的用户登录判断,其实像这种功能统一且使用较多的地方,都可以用AOP来处理,除了统⼀的⽤户登录判断之外,AOP 还可以实现: 统⼀⽇志记录 统⼀⽅法执⾏时间统计 (在性能优化阶段,监控流量,接口的响应时间等甚至每个方法的响应

    2024年02月15日
    浏览(25)
  • SpringBoot整合JavaFX进行桌面应用开发

    目录 一、创建一个spring boot工程 二、导入JavaFX依赖 三、创建fxml文件以及controller类文件 3.1 创建一个fxml文件 3.2 创建对应的controller文件 四、Scene Builder的使用 4.1 下载安装 4.2 运行 4.3 界面编辑 五、 修改主启动类 六、测试运行 七、Jfoenix 学习参考: 第一步,我们直接使用Sp

    2024年02月06日
    浏览(36)
  • Stage模型HarmonyOS服务卡片开发整体说明

    服务卡片(以下简称“卡片”)是一种界面展示形式,可以将应用的重要信息或操作前置到卡片,以达到服务直达、减少体验层级的目的。卡片常用于嵌入到其他应用(当前卡片使用方只支持系统应用,如桌面)中作为其界面显示的一部分,并支持拉起页面、发送消息等基础

    2024年02月15日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包