如何从java堆栈跟踪字符串

时间:2017-09-19 20:20:10

标签: java

我想从stacktrace字符串中恢复异常实例(在java中)。 我需要解析堆栈跟踪(原因,消息......)并认为通过异常api更容易。 有没有人知道是否以及如何做到这一点?

1 个答案:

答案 0 :(得分:1)

这个问题没有一般解决方案。任何Throwable类都可能有自己的构造函数参数和内部逻辑,无法从文本中重新创建实例。

异常类并不意味着以这种方式使用。根据您尝试做的事情,您可能最好使用ExceptionMessage类来表示已解析的数据。你不能throw它,但你可以拥有&#34; String message&#34;和&#34; List<String> stackTraceLines&#34;还有什么。

如果您绝对需要文字Exception对象,则无法单独使用文字。如果您可以更改原点以使其serializes成为异常而不是打印其堆栈跟踪,则可以在另一侧反序列化它们,而不是尝试自己解析它。

但是你采取的任何方法都会容易出错。没有什么可以保证printStackTrace具有您期望的确切结构。没有什么可以保证所有Throwable实例实际可序列化,即使它们都标记为这样。

同样,您所描述的内容实际上并不是印刷堆栈跟踪的目的。它应该是开发人员的非正式诊断工具,而不是结构化数据格式。