到目前为止,我已经使用 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();
}
}