package com.shanzhu.market.common.advice;
// 定义当前类所在的包路径

import com.shanzhu.market.common.constants.HttpStatus;
// 导入包含HTTP状态码常量的工具类

import com.shanzhu.market.common.exception.BusinessException;
// 导入自定义的业务异常类

import com.shanzhu.market.common.web.response.JsonResult;
// 导入用于封装JSON响应结果的工具类

import org.springframework.web.bind.annotation.ExceptionHandler;
// 导入Spring框架的异常处理注解

import org.springframework.web.bind.annotation.RestControllerAdvice;
// 导入Spring框架的全局异常处理注解

/**
 * 统一异常处理类的基类
 */
// 定义类的注释，说明该类的作用

@RestControllerAdvice
// 声明该类为全局异常处理类，返回JSON格式的响应

public class ExceptionControllerAdvice {
// 定义全局异常处理类

    @ExceptionHandler(RuntimeException.class)
    // 声明方法处理RuntimeException类型的异常

    public JsonResult<?> commonExceptionHandler(RuntimeException ex){
        // 定义处理RuntimeException异常的方法，返回JsonResult对象

        ex.printStackTrace();
        // 打印异常堆栈信息到控制台

        return JsonResult.error(HttpStatus.CODE_BUSINESS_ERROR,ex.getMessage());
        // 返回封装的错误响应，包含状态码和异常信息
    }

    @ExceptionHandler(BusinessException.class)
    // 声明方法处理BusinessException类型的异常

    public JsonResult<?> businessHanler(BusinessException ex){
        // 定义处理BusinessException异常的方法，返回JsonResult对象

        return JsonResult.error(HttpStatus.CODE_BUSINESS_ERROR,ex.getMessage());
        // 返回封装的错误响应，包含状态码和异常信息
    }
}