【问题标题】:How to print stacktrace for an exception Android on external file?如何在外部文件上打印异常 Android 的堆栈跟踪?
【发布时间】:2017-05-08 16:39:52
【问题描述】:

我想打印堆栈(在异常块中出现错误后,try catch),但我想在一个外部文件 (.txt) 中打印所有内容,该文件可以放在 android 文件夹的某个位置。

提前致谢

【问题讨论】:

  • 推荐:使用记录器库(如 SL4FJ)。或者,您可以像编写任何其他字符串一样自己将堆栈跟踪写入文件。
  • Logcat 有什么问题?
  • 还有,大概看看this answer

标签: java android stack-trace


【解决方案1】:

打开/声明 PrintWriter 以写入您的文件并将您的 catch 块更改为:

catch(Exception e) {
    e.printStackTrace(your_print_writer);
}

【讨论】:

    【解决方案2】:

    嗯,这可能是个问题,但它是完全可行的:

    try {
        badMethod();
    } catch(SomeException e) {
        try (FileWriter writer = new FileWriter("file.txt")) {
            e.printStackTrace(writer);
        } catch(IOException ioexception) {
            // do something here
        }
    }
    

    【讨论】:

      【解决方案3】:

      有很多方法可以做到这一点,但也许最简单的方法是将 System.err 重定向到您想要的文件,然后简单地调用 Exception.printStackTrace();

      重定向标准错误输出:

      PrintStream ps = new PrintStream("./errors.txt");
      System.setErr(ps);
      

      然后……

      catch(Exception e) {
          e.printStackTrace();
      }
      

      【讨论】:

      • 您可以指定任何您希望的文件路径。在这种情况下,该文件将位于当前目录中,通常是您的应用运行所在的目录。您可以使用任何文本查看器查看它。在 android 中,我使用 ES File Explorer 套件。
      • 我解决了您的问题吗?如果是,请考虑将标记作为答案。
      【解决方案4】:

      你可以这样做:

      try{
          // action
      } catch (IOException e) {
          PrintWriter writer = new PrintWriter("stacktrace.txt");
          e.printStackTrace(writer);
          writer.close();
      }
      

      【讨论】:

      • 好的,我如何获取文件“stacktrace.txt”(查看)?
      • @UmbertoDiCanito 文件浏览器?
      猜你喜欢
      • 2014-08-06
      • 1970-01-01
      • 2012-01-03
      • 2012-09-04
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 2013-09-21
      相关资源
      最近更新 更多