SpringBoot [ 统一响应&&异常处理&&日志输出 ]

第6篇:SpringBoot统一异常处理与日志配置 摘要:本文以生动比喻讲解SpringBoot异常处理与日志配置。异常处理如同教导程序"礼貌报错",日志系统则是程序的"监控摄像头"。内容涵盖:异常分类(检查性/运行时异常/错误)、基础try-catch用法、try-with-resources简化写法,以及实际场景应用(用户查询、订单支付)。通过示例代码展示如何优雅处理程序错误,使系统更健壮、更易维护。学习后可掌握SpringBoot全局异常处理机制和日志配置技巧,提升代码质量。 阅读详情

SpringBoot [ 2.统一响应&&异常处理&&日志输出 ] - 目录


1.统一响应

在Java前后端分离的项目当中,后端提供HTTP接口供前端调用,而HTTP接口的响应结果需要有一个统一的数据结构供前端解析

1.1.ExceptionConstant类,Result类

Result即接口响应的数据结构,由响应码,响应消息,响应数据组成;
ExceptionConstant即Result使用的异常常量,用于定义响应码

package com.mantou.boot.constants;

/**
 * 异常定义-常量
 *
 * @author mantou
 */
public class ExceptionConstant {

    /**----------------------------------------------------操作类--------------------------------------------------------*/
    /**
     * 操作成功
     */
    public static final String RET_CODE_SUCCESS = "00200";
    public static final String RET_INFO_SUCCESS = "Operate Successfully ( 操作成功 ) !";
    /**
     * 操作失败
     */
    public static final String RET_CODE_FAILED = "00500";
    public static final String RET_INFO_FAILED = "Operate Failure ( 操作失败 ) !";
    /**-----------------------------------------------------操作类-------------------------------------------------------*/


    /**---------------------------------------------------服务/业务类-------------------------------------------------------*/
    /**
     * 业务异常
     */
    public static final String RET_CODE_BUSINESS_EXCEPTION = "00010";
    public static final String RET_INFO_BUSINESS_EXCEPTION = "Business Exception ( 业务异常 ) !";

    /**
     * 服务异常
     */
    public static final String RET_CODE_SERVER_EXCEPTION = "01000";
    public static final String RET_INFO_SERVER_EXCEPTION = "Server Exception ( 服务异常 ) !";
    /**---------------------------------------------------服务/业务类-------------------------------------------------------*/


    /**----------------------------------------------------请求/参数类----------------------------------------------------*/
    /**
     * HTTP请求不正确定义: 后端接口HTTP.METHOD定义与前端发起的HTTP.METHOD不符,则视为HTTP请求不正确
     */
    public static final String RET_CODE_REQUEST_EXCEPTION = "00001";
    public static final String RET_INFO_REQUEST_EXCEPTION = "Current Request Method ( GET POST PUT DELETE ) Not Supported ( 不支持当前请求方法 ) !";

    /**
     * 参数无意义empty定义: 前端请求参数无意义(null, "", []等, 视为empty)
     */
    public static final String RET_CODE_PARAM_EMPTY = "00002";
    public static final String RET_INFO_PARAM_EMPTY = "Parameters Is Empty ( 参数无意义 ) !";
    /**-----------------------------------------------------请求/参数类----------------------------------------------------*/


}

Result类

package com.mantou.boot.result;



import com.mantou.boot.constants.ExceptionConstant;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;


/**
 * 项目统一响应结果类
 *
 * @author mantou
 */
@Data
public class Result<T> implements Serializable {

    private static final long serialVersionUID = 4559672604634663976L;
    /**
     * 响应码
     */
    private String resCode;
    /**
     * 响应消息
     */
    private String reInfo;

    /**
     * 响应数据
     */
    private T data;


    /**----
springboot/web项目优秀的后端接口体系,看一篇就够了 springboot/web项目优秀的后端接口体系,看一篇就够了 项目构建-统一参数校验,统一结果响应,统一异常处理,统一错误处理,统一日志记录,统一生成api文档 1. 前言 一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。 本文主要演示如何构建起一个优秀的后端接口体系,体系构建好了自然就有了规范... 阅读详情

相关推荐

springboot 最简单的日志打印,输出日志文件 及全局异常捕获处理

一直使用System.out.println()的我终于在今天从良了,我决定开始使用log了。 好了,不废话了,进入正题(先介绍日志简单使用,再介绍全局异常捕获及根据异常类型处理,不想看日志使用的直接看后面。) 前言: 我在学习这个日志打印的时候,在网上浏览了很多相关的知识,发现有些高级配置啊,有些花样日志管理啊等等; 而我,仅仅是想用一下日志的打印, 然后把日志生成某个文件给运维人...

默默不代表沉默 2万+

MT25QL256完整操作指南:从ID读取到4KB扇区擦除(附华大SPI例程)

本文提供了MT25QL256 NOR FLASH在华大MCU上的完整驱动开发指南。内容涵盖从SPI初始化、器件ID读取、状态寄存器查询,到核心的页编程和4KB扇区擦除操作,并分享了构建健壮驱动框架、处理跨页写入及常见调试问题的实战经验。

tt34567的博客 886

从硬件异常到代码救赎:RH850内存访问错误(MAE)的深层诊断与艺术

本文深入探讨瑞萨RH850微控制器的内存访问错误(MAE)诊断与解决方法。针对程序跑飞和Flash Driver交互中的潜在陷阱,提供系统性硬件异常分析框架和防御性编程实践,帮助嵌入式开发者从底层机制到代码层面有效预防和修复MAE问题,提升系统稳定性。

pytorch8learner的博客 195

Unity3D实战:5分钟搞定RTSP监控视频播放(附完整代码)

本文提供了一套在Unity3D中快速集成RTSP监控视频播放的实战方案。通过采用LibVLCSharp for Unity这一成熟稳定的跨平台中间件,开发者可以轻松实现RTSP流的解码与渲染,并附有完整的C#代码示例,帮助用户在5分钟内完成集成,适用于智慧园区、安防监控等3D可视化场景。

weixin_29001655的博客 191

Element Server Suite社区版Helm部署:私有Matrix聊天服务器快速搭建指南

在云原生和微服务架构日益普及的今天,容器化部署已成为现代应用交付的标准范式。Kubernetes作为容器编排的事实标准,通过声明式配置和自动化管理,极大地简化了复杂分布式系统的部署与运维。Helm作为Kubernetes的包管理器,通过预定义的Chart模板,将应用及其依赖打包,实现了真正的“一键部署”,显著提升了部署效率和可重复性。这种技术组合的价值在于,它让开发者能够专注于业务逻辑,而非底层基础设施的复杂性,尤其适用于需要快速搭建、易于维护的服务场景。Element Server Suite Commu

weixin_42610010的博客 299

DAC8760高精度数模转换器原理与工业级嵌入式应用

数模转换器(DAC)是工业测控系统中实现数字指令到模拟执行的关键接口,其核心性能由分辨率、线性度、温漂及系统级TUE(总未调整误差)共同决定。DAC8760作为一款16位四象限精密DAC,集成了可编程增益放大器(PGA)、内部基准源与SPI高速接口,支持电压/电流双模输出,显著提升闭环控制精度与硬件适配灵活性。其技术价值在于将高精度模拟前端与数字控制深度耦合,满足PLC、ATE及激光偏置等严苛场景对长期稳定性与多通道同步性的要求。本文围绕DAC8760的寄存器配置、HAL/LL驱动实践、PCB布局规范、现场

weixin_42315569的博客 581

STM32 FOC半周期控制延时分析与硬件同步配置

在电机矢量控制(FOC)系统中,数字控制延时是影响电流环带宽、观测器收敛性与系统稳定性的核心瓶颈。其本质源于PWM更新、ADC采样与计算执行之间的时序错配,典型表现为1.5个PWM周期的相位滞后,导致滑模观测器(SMO)失效或高速振荡。通过零阶保持(ZOH)建模可量化该延时对系统相频特性的影响,并揭示其等效为0.5u(t)+0.5u(t−1)的平滑控制律。工程上突破的关键在于重构外设协同机制——以高级定时器重复计数器(RCR0)驱动中心对齐PWM的半周期更新事件,使控制量在0.5T_PWM内生效,同步触发多

flink9streamer的博客 1130

TC3XX - MCAL知识点(二十九):FLS MCAL配置及代码实战(英飞凌DFLASH)

FLS驱动程序为DFlash 0的初始化、读取、写入和擦除提供了定义良好的配置和标准服务。除此之外,我们还提供一些非autosar服务示例 Fls_17_Dmu_CompareWordsSync、Fls_17_Dmu_CancelNonEraseJobs、Fls_17_Dmu_VerifyErase,LFls_17_Dmu_VerifySectorErase、Fls_17_Dmu_GetNotifCaller等。用户通过FLS驱动程序获得对底层DFlash0的封装访问。

梦想技术家 2363

190、LLC谐振变换器的样机调试实战(问题定位)

这篇实战笔记总结了LLC谐振变换器样机调试中的五大典型问题及解决方案:1)空载炸机源于谐振电容纹波电流能力不足;2)轻载啸叫因控制环路不稳定,需调整突发模式阈值;3)MOSFET过热由死区时间不当导致,需精确优化实现ZVS;4)输出纹波大由PCB布局耦合引起,需优化共模抑制;5)启动过冲需延长软启动时间。作者强调调试需结合示波器、热成像仪等工具,理论计算与实测并重,并详细记录每次参数调整。文章指出LLC调试是不断试错的过程,关键是通过现象分析本质原因。

Jack010169的博客 46

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: SpringBoot [ 1.快速启动 ]
下一篇: SpringBoot [ 3.集成 Mybatis-Plus]
我是馒头啊
博客等级 码龄10年 6粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值