Java是否可以自动包装对象并作为throws异常的一部分进行抛出?

时间:2019-06-26 08:02:28

标签: java exception throws

我在课堂上有多种方法;每个方法都已使用“ throws Exception”选项进行了声明。每当发生异常时,我都希望此类中的一个对象被自动包装并创建一个自定义的异常对象。

该新创建的自定义对象应该被抛出。

我不想在每个方法中创建一个try-catch块并创建一个自定义异常对象,该对象将具有我想包装的对象。

没有以上方法,有没有办法做到这一点。如果是这样,我需要做什么代码更改?

2 个答案:

答案 0 :(得分:0)

(我假设您不是在问如何定义自定义异常类...)

  

“没有上述方法,有没有办法做到这一点。”

不是在纯Java中。您可能可以使用AOP或其他一些技术来重写字节码,以将“捕获并包装并抛出”逻辑注入到您的方法中。

例如,本文介绍了如何使用AspectJ转换异常:

答案 1 :(得分:0)

我认为您可以使用Spring AOP做到这一点。像这样:

import org.springframework.aop.ThrowsAdvice;

public class MyExceptionInterceptor implements ThrowsAdvice {

    public void afterThrowing(Method method, Object[] args, Object target, Exception ex) {
        ...
        throw new WrappedException(somehow find object you want to wrap);

不幸的是,我没有太多的使用经验。这篇文章可能会有所帮助:

How does Spring know that ThrowsAdvice.afterThrowing needs to be called?

在线上有使用“ ThrowsAdvice”的教程。我建议检查其中一些。