Java—我是否可以反省地发现我';m是从catch块中的函数调用的,用于PartyFunclar异常?

Java—我是否可以反省地发现我';m是从catch块中的函数调用的,用于PartyFunclar异常?,java,reflection,Java,Reflection,首先,在我被骂之前,我想澄清一点:我不打算编写任何使用这种控制流的代码;这显然很可怕。忘记用例吧,这更多的是一个关于它是否可能的问题: 我想知道是否有可能知道在调用堆栈的某个地方,某个函数是否在某个特定异常的catch块中被调用 假设我有一个函数: foo() { try { something } catch (SuperException s) { bar() } 因此,如果对bar的方法签名没有控制权,并且给定的bar也被许多其他函数调用,那么如果在捕获超级异常的catc

首先,在我被骂之前,我想澄清一点:我不打算编写任何使用这种控制流的代码;这显然很可怕。忘记用例吧,这更多的是一个关于它是否可能的问题:

我想知道是否有可能知道在调用堆栈的某个地方,某个函数是否在某个特定异常的catch块中被调用

假设我有一个函数:

foo() {
try {
    something
}
catch (SuperException s) {
    bar()
}

因此,如果对bar的方法签名没有控制权,并且给定的bar也被许多其他函数调用,那么如果在捕获超级异常的catch块中调用bar,bar的行为会有所不同吗?(不,被foo调用并不是一个充分条件,它是一个超级异常)

您可以查看调用堆栈并获得每个调用的行号

您可以读取字节码来确定catch块的位置以及这些块中的代码行

将两者匹配在一起,以查看调用堆栈中的任何位置是否位于catch块中

注意:只有在代码中编译了调试信息时,这才有效