到目前为止,我最后使用try catch作为异常处理机制,但我想制作一个通用的finally块,它应该执行一些必要的操作。
在我的场景中,我必须在捕获任何A,B,C类异常后执行相同的操作。
事情是我不想在每次尝试catch块之后声明finally块。 对我来说这是一个非常繁琐的程序,因为我有近60个60级的课程,其中很多都使用频繁的try catch块。
所以我要求一种更简单的方法来执行同样的事情。
有没有人找到这方面的捷径? 我提前多谢了。
答案 0 :(得分:0)
在类加载器加载类之前,您可以尝试在应用程序启动时使用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();
}
}