记录一下。
Exception的printStackTrace来自于Tthrowable,android下只支持两种方式
printStackTrace(PrintStream err)
printStackTrace(PrintWriter err)
所以没法直接把StringWriter作为参数传递给printStackTrace()获取stackTrace的字串。
通过查找code发现,java.io.StringWriter和java.io.PrintWriter均继承自java.io.Writer;
其中PrintWriter提供以Writer接口作为输入参数的构造函数PrintWriter(Writer wr)
所以可以通过使用StringWriter构造PrintWriter,然后借这个壳去给printStackTrace,就能把stackTrace以字串形式抓出来了。
smaple如下:
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
Exception fe = new Exception();
fe. printStackTrace(pw);
log(sw.toString());