我想从stacktrace字符串中恢复异常实例(在java中)。 我需要解析堆栈跟踪(原因,消息......)并认为通过异常api更容易。 有没有人知道是否以及如何做到这一点?
答案 0 :(得分:1)
这个问题没有一般解决方案。任何Throwable
类都可能有自己的构造函数参数和内部逻辑,无法从文本中重新创建实例。
异常类并不意味着以这种方式使用。根据您尝试做的事情,您可能最好使用ExceptionMessage
类来表示已解析的数据。你不能throw
它,但你可以拥有" String message
&#34;和&#34; List<String> stackTraceLines
&#34;还有什么。
如果您绝对需要文字Exception
对象,则无法单独使用文字。如果您可以更改原点以使其serializes成为异常而不是打印其堆栈跟踪,则可以在另一侧反序列化它们,而不是尝试自己解析它。
但是你采取的任何方法都会容易出错。没有什么可以保证printStackTrace
具有您期望的确切结构。没有什么可以保证所有Throwable
实例实际可序列化,即使它们都标记为这样。
同样,您所描述的内容实际上并不是印刷堆栈跟踪的目的。它应该是开发人员的非正式诊断工具,而不是结构化数据格式。