是否有任何好的函数收集字符串中异常的所有原因?
方法printStackTrace()
使用StackTraces收集它们:
HighLevelException: MidLevelException: LowLevelException
at Junk.a(Junk.java:13)
at Junk.main(Junk.java:4)
Caused by: MidLevelException: LowLevelException
at Junk.c(Junk.java:23)
at Junk.b(Junk.java:17)
at Junk.a(Junk.java:11)
... 1 more
Caused by: LowLevelException
at Junk.e(Junk.java:30)
at Junk.d(Junk.java:27)
at Junk.c(Junk.java:21)
... 3 more
但我只想要getMessage()
原因:
HighLevelException: MidLevelException: LowLevelException
Caused by: MidLevelException: LowLevelException
Caused by: LowLevelException
我应该写自己的功能吗?
答案 0 :(得分:5)
是的,您必须为此编写一个简单的方法
static String message(Throwable e) {
StringBuilder sb = new StringBuilder();
sb.append(e.getMessage());
Throwable t = e.getCause();
while (t != null) {
sb.append("\nCaused by: ").append(t.getMessage());
t = t.getCause();
}
return sb.toString();
}
答案 1 :(得分:1)
您可以创建自定义异常并覆盖getMessage()函数。
这是我收集Stacktraces的示例:
@Override
public String getMessage()
{
for (StackTraceElement element : this.getStackTrace() ){
result.append( element );
result.append( NEW_LINE );
}
return result.toString();
}
您可以使用自己的代码版本来满足您的要求。