2017-05-08 52 views
-3

我想打印堆棧(在異常塊中發生錯誤之後,try catch),但我想要在外部文件(.txt)中打印所有文件,我可以在android文件夾中找到該文件。如何在外部文件上打印Android例外的stacktrace?

在此先感謝

+0

推薦:使用記錄器庫(如SL4FJ)。另外,你可以像寫其他任何字符串一樣將堆棧跟蹤寫入文件。 – m0skit0

+0

Logcat出了什麼問題? –

+0

另外,可能看看[這個答案](http://stackoverflow.com/a/12053112/1450348) – manman

回答

-1

你可以這樣來做:

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

好吧,我怎麼能把文件「stacktrace.txt」(看到它)? –

+1

@UmbertoDiCanito文件資源管理器? – m0skit0

+0

它告訴我,該方法已被棄用。 –

0

打開/聲明PrintWriter寫信給你的文件,並改變你的catch塊:

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

好,這可能是一個問題,但它是完全可行的:

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

有很多方法可以做到這一點,但也許最簡單的方法是將System.err重定向到所需的文件,然後簡單地調用Exception.printStackTrace();

重定向標準錯誤輸出:

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

然後......

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

如何我可以看到文件errors.txt? –

+0

你可以指定你想要的任何文件路徑。在這種情況下,該文件將位於當前目錄中,該目錄通常是您的應用程序運行的目錄。您可以使用任何文本查看器查看它。在Android我使用ES文件資源管理器套件。 – LuisGP

+0

我解決了你的問題嗎?如果是,請考慮標記爲答案。 – LuisGP