将堆栈跟踪打印到textarea

时间:2015-07-07 10:06:53

标签: java exception

我使用以下代码将Stack Trace打印到JTextArea

        try
        {
            throw new IOException();
        }
        catch(IOException e)
        {
            e.printStackTrace(pw);
            ta1.append(sw.toString());
        }
        pw.flush();
        sw.flush();
        try
        {
            throw new SQLException();
        }
        catch(SQLException e)
        {
            e.printStackTrace(pw);
            ta1.append(sw.toString());
        }

打印出2 IOException个跟踪和1 SQLExeption个跟踪。 为什么不把字符串写出来?

我想要1 IOException跟踪和1 SQLExeption跟踪。

请建议正确的方法。

1 个答案:

答案 0 :(得分:1)

flush的{​​{1}}方法无效! StringWriter方法与flush兼容。

java.io.Writer来源:

StringWriter

/** * Flush the stream. */ public void flush() { } 调用PrintWriter StringWriter方法...

flush来源:

PrintWriter

因此,如果您要清除/** * Flushes the stream. * @see #checkError() */ public void flush() { try { synchronized (lock) { ensureOpen(); out.flush(); } } catch (IOException x) { trouble = true; } } pw,则不应使用sw方法。你需要创建一个新的。

见:

What sense does it make to flush a StringWriter in Java?

How do you "empty" a StringWriter in Java?