我有一个要求,其中所有服务实现类都具有处理异常处理的通用方法。这些服务使用Java 8 Completable的未来。 现在,Completable Future可以接收多个异常,并且基于不同类型的异常,必须将它们包装到新的异常中,然后再从CompletableFuture.exceptionally()方法中抛出。
由于处理异常的代码在所有服务中都是通用的,因此我将代码提取到以下实用程序类中:
public static <T> Function<Throwable, ? extends T> getExceptionHandleFunction() {
return throwable -> {
Throwable throwableCause = throwable instanceof CompletionException ? throwable.getCause() : throwable;
if (throwableCause instanceof PolicyViolation) {
throw new ABCException("message", throwableCause);
}
if (!(throwableCause instanceof LLCaresTransportException)) {
throw new DEFException("message", throwableCause);
}
throw (GHIException) throwableCause;
};
}
现在,一切正常,唯一的问题是我的日志中的异常堆栈以编写此方法的UtilityClass开头。
我不希望我的日志显示此不必要的堆栈,因为它没有用,也无法显示异常从哪里开始的真实图片。
有没有一种方法可以截断该实用程序类的堆栈,或者有一种优美的方式来处理此类情况。 我尝试了Apache Commons ExceptionUtils,但它们不支持这种用例。