e.printStackTrace(); 在字符串中

Nik*_*tel 48 java android stack-trace

e.printStackTrace()打印异常错误的方法,所以我想把整个例外用于String显示它Toast.makeText()
如何做到这一点?
如果有更多的替代想法,请与我分享或建议我.

Ido*_*lon 108

使用以下代码:

Writer writer = new StringWriter();
exception.printStackTrace(new PrintWriter(writer));
String s = writer.toString();
Run Code Online (Sandbox Code Playgroud)

曾经有一种方法通过Log.getStackTraceString调用将异常堆栈跟踪提取到一行中的String中.但是,在Android 4.0(API 14)开始,该方法是不可靠了,因为它返回一个空字符串UnknownHostException(见Android的问题#21436的细节,简而言之就是:"以减少日志量喷出该应用程序在非做网络的错误状况不可用"Android工程师让恕我直言改变Log.getStackTraceString方法的可疑决定.

因此,最好使用我在本文开头提供的代码.


Mac*_*tle 58

import android.util.Log;

...

String stackTrace = Log.getStackTraceString(e);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.看起来它没有得到它应得的关注:) (7认同)

Nik*_*kov 6

这是可行的,但不要这样做.只显示错误消息(即使对于'真实'用户来说太多了),完整堆栈跟踪应仅转到日志.

  • 错误!=完整堆栈跟踪.显示为吐司的堆栈跟踪几乎是不可读的.此外,它会在几秒钟后消失,你将没有时间阅读它(因为它很长). (2认同)