第九篇 异常统一处理

异常统一处理的优势

提高代码可维护性

通过集中管理异常处理逻辑,避免重复代码,减少因异常处理分散导致的维护困难。统一处理机制使修改和扩展异常处理策略更加便捷。

增强系统健壮性

统一捕获未处理的异常,防止程序意外终止。通过预设的降级策略(如默认返回值、日志记录、友好提示),确保系统在异常情况下仍能提供基本服务。

提升用户体验

自定义异常信息格式,返回用户友好的错误提示(如标准化JSON响应)。避免暴露敏感技术细节,同时提供可追溯的错误码或请求ID便于问题定位。

简化开发流程

开发者无需在每个方法中单独处理异常,只需关注业务逻辑。通过AOP或全局拦截器实现非侵入式处理,降低业务代码与异常处理的耦合度。

便于监控与分析

集中记录异常日志,结合监控工具实时发现系统问题。统一存储异常上下文信息(如参数、堆栈),加速故障排查和性能优化。

规范团队协作

制定统一的异常分类体系(如业务异常、系统异常),明确处理优先级。通过标准化接口文档描述可能的异常类型,提升团队协作效率。

实现的思路:将异常进行统一捕获管理,就不用在Controller层进行显示处理,

代码实现:

java 复制代码
@ControllerAdvice
public class GlobalExceptionHandler {
    /**
     * 自定义方法,处理所有controller中出现的异常
     */
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ResultObj globalHanderlException(Exception exception) {//精准捕获异常,将信息返回给前端
        //处理异常逻辑】
        System.out.println("----------执行全局异常方法--------------");
        //打印异常堆栈信息
        exception.printStackTrace();

        return ResultObj.error();
    }
}

controller层

java 复制代码
@Controller
public class ExceptionController {
    /**
     * 查询数据
     */
    @RequestMapping("queryData")
    @ResponseBody
    public ResultObj queryData(@RequestParam String type){
        if(type.equals("宝马")){
            return ResultObj.ok("宝马");
        }else {
            return ResultObj.error();
        }
    }
    /**
     * 查询数据
     */
    @RequestMapping("queryAll")
    @ResponseBody
    public ResultObj queryAll(){
        //把可能出现异常代码方法try块
//        int i = 10 / 0; //算术异常
        //抛出空指针异常
        String str = null;
        str.isEmpty();
        return ResultObj.ok();
    }
}

测试

运行启动类,直接访问接口,产看打印后台信息

相关推荐
JH30735 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
qq_12498707538 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_8 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
2301_818732068 小时前
前端调用控制层接口,进不去,报错415,类型不匹配
java·spring boot·spring·tomcat·intellij-idea
汤姆yu12 小时前
基于springboot的尿毒症健康管理系统
java·spring boot·后端
暮色妖娆丶12 小时前
Spring 源码分析 单例 Bean 的创建过程
spring boot·后端·spring
biyezuopinvip13 小时前
基于Spring Boot的企业网盘的设计与实现(任务书)
java·spring boot·后端·vue·ssm·任务书·企业网盘的设计与实现
JavaGuide13 小时前
一款悄然崛起的国产规则引擎,让业务编排效率提升 10 倍!
java·spring boot
figo10tf14 小时前
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
java·spring boot·后端
zhangyi_viva14 小时前
Spring Boot(七):Swagger 接口文档
java·spring boot·后端