android 打印java堆栈_Java / Android-如何打印完整的堆栈跟踪?

我现在快速执行了一个递归函数,该函数将迭代throwable和throwable.getCause()。

这是因为每个“ throwable.getCause()”都会向您返回一条新的异常消息,其中包含重复的行和换行。所以这个概念是:如果在主throwable上有一个“ cause”行,所以有一行“ n more ..”,所以我得到了“ n more ..”之前的最后一行,然后得到了原因消息,最后,我将原因消息细分为仅得到最后重复的行之后的部分(出现在最后一行的最后一行):main throwable和cause throwable。

然后,当我得到原因消息时,我使用递归,因此重新调用同一函数从主throwable中获取原因消息,我将得到一个已经被替换的消息。如果从主要可抛出对象引发的原因也有另一个原因,那么主要可引发对象具有3个级别(主要->原因->原因),在主要可引发对象上,我将获得具有“原因消息”的已替换消息(使用相同的主

publicstaticStringprintStackTraceString(T ex){// RecursiveThrowabletr=ex;if(tr!=null){Stringst=Log.getStackTraceString(tr);if(tr.getCause()!=null){// Recursion...Stringcs=printStackTraceString(tr.getCause());Stringr1=st.subSequence(0x0,st.lastIndexOf("\n",st.lastIndexOf("\n")-"\n".length())).toString();Stringreplace=r1.substring(r1.lastIndexOf("\n"));if(cs.contains(replace)){returnr1.concat(cs.subSequence(cs.indexOf(replace)+replace.length(),cs.length()).toString());}}returnst;}return"";}

我只用2级(主要->原因)尝试了它,而没有更多:/如果有什么问题,请编辑函数并写评论:D

也有一个不错的编码和美好的一天:D

重要:

如果“ st”不包含“ \ n”或类似字符,则此代码有时会引发异常(我发现某些堆栈跟踪异常存在此问题)。为了解决这个问题,您需要在代码行之前添加一些检查:“ String r1 = ...”

您需要检查:“ st”包含“ \ n”,并且“ st.subSequence”的开始和结束索引均有效。

无论如何,我建议将其放入try-catch并在出现异常的情况下返回空字符串。(它是递归的,因此返回的空字符串将被连接到先前处理的字符串)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值