Java中无法从void转换为String?

时间:2014-04-16 02:36:29

标签: java

我正在尝试将(e.printStackTrace())命令行上打印的错误保存在StringBuilder变量中,然后我将其导出到txt文件但是我收到的错误无法从void转换为String?有人可以向我解释为什么我不能把它强制转换为字符串,如果有另一种策略来保存它?

StringBuilder error_logs = new StringBuilder();

catch (SQLException e) {

            e.printStackTrace();

                    error_logs.append(e.printStackTrace());
        }

3 个答案:

答案 0 :(得分:3)

e.printStackTrace仅打印堆栈跟踪,但不返回它。您可以使用e.getStackTrace(),然后按照您希望的方式将其写入日志。

答案 1 :(得分:0)

StringWriter wtr = new StringWriter();
PrintWriter pwtr = new PrintWriter(wtr);
e.printStackTrace(pwtr);
String stackTrace = wtr.toString();

答案 2 :(得分:0)

printStackTrace()是Exception类的函数,它将堆栈跟踪写入outstream。它不返回Error的字符串表示形式。您可以像已经提到的那样使用getStackTrace(),但它不会返回堆栈跟踪的字符串表示形式,而是返回StackTraceElements数组。如果您正在尝试将堆栈跟踪写入文件,则可以使用函数printStackTrace( PrintStream s )的PrintStream版本将PrintStream传递给将存储该字符串的函数。