1common创建LeadException 作为项目自己的异常
#### 通用异常--动态参数 参数过滤 请求示例 请求参数 响应参数 响应码 headers 响应时间
package com.heima.common.exception;
import com.heima.common.enums.AppHttpCodeEnum;
import lombok.Getter;
/**
* 自定义异常
*/
@Getter
public class LeadException extends RuntimeException {
private AppHttpCodeEnum enums;
public LeadException(String message) {
super(message);
}
public LeadException(String message, Throwable cause) {
super(message, cause);
}
public LeadException(AppHttpCodeEnum enums, String message) {
super(message);
this.enums = enums;
}
public LeadException(AppHttpCodeEnum enums) {
this.enums = enums;
}
}
2common模块中新建类ExceptionCatch
@RestControllerAdvice 控制器增强注解
@ExceptionHandler 异常处理器 与上面注解一起使用,可以拦截指定的异常信息
package com.heima.common.exception;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.common.enums.AppHttpCodeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* 统一异常控制器增强
*/
@RestControllerAdvice 返回数据
@Slf4j
public class ExceptionCatch {
@ExceptionHandler(runtimeException.class) // 捕获异常类型
返回ResponseResult 参数传参用
public ResponseResult exception(runtimeException e) {
// 记录日志
log.error(e.getMessage());
// 返回通用异常信息 传code message
return ResponseResult.error(AppHttpCodeEnum.SERVER_ERROR);
return ResponseResult.error("code":0);
}
/**
* 自定义异常处理
* @param leadException
* @return
*/
@ExceptionHandler(LeadException.class)
public ResponseResult leadExceptionHandler(LeadException leadException) {
leadException.printStackTrace();
if(StringUtils.isNotBlank(leadException.getMessage())){
log.error("catch exception:{}", leadException.getMessage());
return ResponseResult.error(leadException.getEnums(),leadException.getMessage());
}else{
log.error("catch exception:{}", leadException.getEnums().getErrorMessage());
return ResponseResult.error(leadException.getEnums());
}
}
}
3#### 集成到admin项目中使用
package com.heima.admin.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* 初始化配置
*/
@Configuration
@ComponentScan({"com.heima.common.exception"})
public class InitConfig {
}
4contoller
if(CollectionUtils.isEmpty(adChannelIPage.getRecords())){
throw new LeadException(AppHttpCodeEnum.DATA_NOT_EXIST);
}