使用 throws Exception 获取函数的堆栈跟踪 [重复]

Posted

技术标签:

【中文标题】使用 throws Exception 获取函数的堆栈跟踪 [重复]【英文标题】:Get stacktrace of function with throws Exception [duplicate] 【发布时间】:2017-03-11 20:45:55 【问题描述】:

假设我有这样的功能

public JSONObject parseMessage(InputStream fileName) throws Exception  

它会抛出一个错误,我在哪里可以得到它的堆栈跟踪?

我知道我是否有类似的东西

try  catch(Exception e) //I could save it to a var here

但是如何使用throws Exception 的函数将堆栈跟踪保存为变量?

感谢大家的帮助

【问题讨论】:

您想在函数抛出异常之前获取堆栈跟踪信息吗? 你可以catch它,处理它,然后throw它再次。 【参考方案1】:

您可以使用Apache commons 将异常堆栈跟踪转换为字符串。

这个类在 Apache commons-lang-2.2.jar 中可用:

org.apache.commons.lang.exception.ExceptionUtils.getStackTrace(Throwable)

【讨论】:

或者只使用现有的.getStackTrace(),它返回StackTraceElement[],它有一个非常好的.toString() Arrays.toString(Thread.currentThread().getStackTrace());

以上是关于使用 throws Exception 获取函数的堆栈跟踪 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

php 抛出一个异常throw new Exception(...),报错Class 'ss\Exception' not found为啥?

Java中的异常-Throwable-Error-Exception-RuntimeExcetpion-throw-throws-try catch

为啥java中Exception的对象能够获取子类的信息.

异常处理时为什么有些异常throw出去需要在函数头用throws声明,有些就不用

List addAll throw error :Unhandled Exception: 迭代期间并发修改:

在catch块中throw new Exception的意义(转)