Stack trace as String
如何在Java中获取完全异常消息?
我正在创建一个Java应用程序。如果存在运行时异常,将弹出带有
1 |
但是,我希望我的文本区域显示如下内容:
。
下面是我的代码中被
1 2 |
号
我试过使用
你需要打电话给
1 2 3 4 5 6 7 8 9 10 11 12 | try{ }catch(Exception ex){ String message = getStackTrace(ex); } public static String getStackTrace(final Throwable throwable) { final StringWriter sw = new StringWriter(); final PrintWriter pw = new PrintWriter(sw, true); throwable.printStackTrace(pw); return sw.getBuffer().toString(); } |
您还可以使用commons-lang-2.2.jar apache commons lang库,它提供以下功能:
1 2 |
号
exceptionutils getstacktrace()。
要将堆栈跟踪获取到字符串中,可以使用以下行:
1 2 3 4 5 | CharArrayWriter cw = new CharArrayWriter(); PrintWriter w = new PrintWriter(cw); e.printStackTrace(w); w.close(); String trace = cw.toString(); |
如果您没有使用任何记录器(log4j或Oracle记录器API),那么可以使用下面的语句来打印完整的异常消息。
1 2 3 4 5 6 7 8 9 10 | try{ // statement which you want to monitor }catch(Exception e){ e.printStackTrace() // OR System.err.println(e.getStackTrace()); // OR System.err.println(e); // OR System.err.println(e.getMessage()); // OR System.err.println(e.getCause()); } |
如果您使用的是logger API,那么使用下面的语句
1 2 3 4 5 6 7 |
。
e.printstacktrace将给出完整的堆栈跟踪
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public static String getStackMsg(Throwable e) { StringBuffer sb = new StringBuffer(); sb.append(e.toString()).append(" "); StackTraceElement[] stackArray = e.getStackTrace(); for(int i = 0; i < stackArray.length; ++i) { StackTraceElement element = stackArray[i]; sb.append(element.toString() +" "); } return sb.toString(); } |
。
这是完整的异常消息。
如果需要更多信息,请尝试e.printstacktrace()。
然后你会得到你所张贴的照片上所看到的一切。
尝试