我是靠谱客的博主 雪白方盒,最近开发中收集的这篇文章主要介绍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并在出现异常的情况下返回空字符串。(它是递归的,因此返回的空字符串将被连接到先前处理的字符串)。

最后

以上就是雪白方盒为你收集整理的android 打印java堆栈_Java / Android-如何打印完整的堆栈跟踪?的全部内容,希望文章能够帮你解决android 打印java堆栈_Java / Android-如何打印完整的堆栈跟踪?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部