有没有比肆意抛出异常和捕获堆栈跟踪更好的方法来找出为什么(或至少从哪里)调用我的函数?
我可以记录调用者正在使用的参数,但我无法获得调用者位置本身.它是一些第三方软件,因此查找所有引用并添加日志信息不是一种选择.我也犹豫是否将调试器附加到正在运行的jvm.
完全可以创建一个异常,而不是抛出它,并检查它的堆栈跟踪:
Exception e = new Exception();
e.printStackTrace(System.out);
Run Code Online (Sandbox Code Playgroud)
请注意,这样做通常可能会对JVM的性能产生不利影响.
StackTraceElement[] stacktrace = e.getStackTrace();
Run Code Online (Sandbox Code Playgroud)
stacktrace数组的第0个元素将包含实例化异常的方法.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |