第九篇 异常统一处理

异常统一处理的优势

提高代码可维护性

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

增强系统健壮性

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

提升用户体验

自定义异常信息格式,返回用户友好的错误提示(如标准化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();
    }
}

测试

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

相关推荐
二哈喇子!3 小时前
SpringBoot项目右上角选择ProjectNameApplication的配置
java·spring boot
二哈喇子!3 小时前
基于Spring Boot框架的车库停车管理系统的设计与实现
java·spring boot·后端·计算机毕业设计
二哈喇子!4 小时前
基于SpringBoot框架的水之森海底世界游玩系统
spring boot·旅游
二哈喇子!4 小时前
Java框架精品项目【用于个人学习】
java·spring boot·学习
二哈喇子!4 小时前
基于SpringBoot框架的网上购书系统的设计与实现
java·大数据·spring boot
二哈喇子!5 小时前
基于JavaSE的淘宝卖鞋后端管理系统的设计与实现
java·spring boot·spring
Coder_Boy_5 小时前
基于SpringAI的在线考试系统-智能考试系统-学习分析模块
java·开发语言·数据库·spring boot·ddd·tdd
高山上有一只小老虎6 小时前
mybatisplus实现分页查询
java·spring boot·mybatis
毕设源码-朱学姐7 小时前
【开题答辩全过程】以 基于SpringBoot的律师事务所管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
毕设源码-朱学姐7 小时前
【开题答辩全过程】以 基于springboot的日用药品仓库管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端