我有一种方法,例如void abc(){}
并且此方法直接从我的 main()
方法以及它的异常 block (即 catch block )调用。
现在我想在 abc()
方法中找出 abc()
是否被正常调用(即从 main()
) 或在异常情况下调用(即来自 catch()
block )。
我试过这个,使用 Thread.getCurrentStackTrace()
,但是它总是返回 main()
方法(作为方法名称),因为在这两种情况下方法将始终保留一样。
这里重要的一点是,我不能更改 abc() 方法的签名,我不能在 main() 方法或 catch() block 中设置任何标志,由于这个限制,我试图找出如何检查从哪里调用 abc() 或简单地说....如何确定 abc() 方法内是否抛出异常。
请推荐!
最佳答案
使用 StackTraceElement
,您可能会得到行号,从中您可以确定 abc()
是否从 main()
的 catch block 中调用。
参见 here .
它与您已经尝试过的类似,但您得到的是行号。
注意:只有当您有 main 方法的源代码以查看行号时,这才有效。如果 main 在源代码不可用的外部 jar 中,则将无法工作。
编辑:另外,如果外部 jar 是在没有行号调试信息的情况下创建的,这将不起作用。
关于java - 如何找出是否在 Java 中从 catch block 调用了相同的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31260660/