我正在尝试将(e.printStackTrace()
)命令行上打印的错误保存在StringBuilder变量中,然后我将其导出到txt文件但是我收到的错误无法从void转换为String?有人可以向我解释为什么我不能把它强制转换为字符串,如果有另一种策略来保存它?
StringBuilder error_logs = new StringBuilder();
catch (SQLException e) {
e.printStackTrace();
error_logs.append(e.printStackTrace());
}
答案 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传递给将存储该字符串的函数。