第九篇 异常统一处理

异常统一处理的优势

提高代码可维护性

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

增强系统健壮性

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

提升用户体验

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

测试

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

相关推荐
学到头秃的suhian2 小时前
Springboot进阶知识
java·spring boot·spring
白宇横流学长2 小时前
基于SpringBoot实现的电子发票管理系统
java·spring boot·后端
白宇横流学长2 小时前
基于SpringBoot实现的智慧就业管理系统
java·spring boot·后端
YDS8293 小时前
SpringCloud —— 黑马商城的项目拆分和Nacos
spring boot·后端·spring cloud
中文很快乐3 小时前
从零到一:用 SpringBoot 打造 RESTful API 实战指南
java·spring boot·后端·restful
2201_757830874 小时前
SpringBoot
java·spring boot·后端
pursue.dreams4 小时前
JavaFX + Spring Boot 桌面应用脚手架:开箱即用的企业级开发框架
spring boot·自动化·javafx
哈哈哈笑什么4 小时前
Spring Boot接口国际化异常信息方案
java·spring boot·后端
qq_162987694 小时前
SpringBoot框架选型
java·spring boot·后端