有没有办法覆盖尝试捕获的行为,最后



到目前为止,我已经使用 try catch finally 作为异常处理机制,但我想创建一个通用的 finally 块,应该执行一些必要的操作。

就像在我的场景中一样,我必须在捕获任何 A、B、C 类型的异常后执行相同的操作。

问题是我不想在每次尝试捕获块后声明最终阻止。这对我来说非常繁琐的过程,因为我有近 50 60 个类,其中许多都使用频繁的 try catch 块。

所以我要求一种更简单的方法来执行同样的事情.

有没有人为此找到捷径?我提前多次感谢。

在类加载器加载类之前,您可以尝试在应用程序启动时使用 javassist 来检测您的类。

import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
public class Main {
  private int run() {
    return new Test().myMethod();
  }
  public static void main( String[] args ) throws Exception {
    ClassPool pool = ClassPool.getDefault();
    CtClass cc = pool.get( "Test" );
    CtMethod cm = cc.getDeclaredMethod( "myMethod" );
    // insertAfter(..., true) means this block will be executed as finally
    cm.insertAfter( "{ System.out.println("my generic finally clause"); }", true );    
    // here we override Test class in current class loader
    cc.toClass();
    System.out.println( new Main().run() );
  }
} 

// another file (Test.java)
public class Test {
  int myMethod() {
    throw new RuntimeException();
  }
}   

相关内容

  • 没有找到相关文章

最新更新