最佳实践:使用Spring AOP对异常进行统一处理(4)

时间:2025-07-10

有必要使用一个统一的异常处理机制 来进行某些异常处理的统一决策。比如对异常进行统一的日志记录,对散落在各处的某类异常进行统一处理等。

public void setNoCatchedExceptions(Set<String> noCatchedExceptions){

this.noCatchedExceptions = noCatchedExceptions;

}

/**

*捕获异常记录日志.

*@param joinPoint 连接点,可通过连接点获取目标对象,目标方法签名,及方法参数 *@param ex 捕获的异常

*/

public void log(JoinPoint joinPoint, Throwable ex) {

/* 过滤不记录日志的异常*/

for(String exClassName:noCatchedExceptions){

try {

Class clazz = Class.forName(exClassName.trim());

if (clazz.isAssignableFrom(ex.getClass()))

return;

} catch (ClassNotFoundException e1) {

logger.error("applicationContext-exception: propertity

noCatchedExceptions setting error:", e1);

}

}

List<Object> args

=java.util.Arrays.asList(joinPoint.getArgs());

String strArgs = args.toString();

Object[] objs = new Object[]{ joinPoint.getSignature().getName(),

strArgs.substring(0, strArgs.length() -1).substring(1) };

String message = "{}({}) execute error!!";

StringBuffer buf = new StringBuffer(message)

.append("\r\nStackTrace:")

.append(ExceptionUtil.bufferExceptionTrace(ex));

logger.error(buf.toString(), objs);

}

}

/**

* 未处理的异常在此进行统一处理,此通在最后执行.

*

* @author yrliang

*

*/

@SuppressWarnings("unchecked")

public class ExceptionMessageTransfer {

private Logger logger = LoggerFactory.getLogger(this.getClass()); private Set<String> noCatchedExceptions = new HashSet<String>();

public Set<String> getNoCatchedExceptions() {

return noCatchedExceptions;

}

public void setNoCatchedExceptions(Set<String> noCatchedExceptions) {

this.noCatchedExceptions = noCatchedExceptions;

}

/**

*捕获异常进行处理

最佳实践:使用Spring AOP对异常进行统一处理(4).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219