第九篇 异常统一处理

异常统一处理的优势

提高代码可维护性

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

增强系统健壮性

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

提升用户体验

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

测试

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

相关推荐
vipxieliang20 小时前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
kybs19911 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
码兄科技1 天前
24小时自助健身房系统软件开发实战指南:功能设计与部署方案
java·spring boot·uni-app
paopaokaka_luck1 天前
智慧社区综合服务小程序(人脸识别、AI问答、Echarts图形化分析)
前端·javascript·spring boot·spring·数据分析·echarts
需要8261 天前
JVM 内存区域与对象创建:一次 GC 从哪来
java·jvm·spring boot·spring·servlet·tomcat
凤山老林1 天前
Spring Boot 应用 JVM 性能调优实战:GC 日志分析、堆内存规划与容器环境避坑
jvm·spring boot·gc·堆内存
计算机毕设定制辅导-无忧学长1 天前
《基于Vue的流浪动物救助中心管理系统的设计与实现》
java·vue.js·spring boot·流浪动物救助中心管理系统
huaweichenai1 天前
spring boot操作PDF
java·spring boot·pdf
guo_wen_qiang1 天前
springboot如何自定义一个启动器starter
java·spring boot·intellij-idea