首页 > 代码库 > 异常——获取异常信息
异常——获取异常信息
当出现异常时大家都经常会想查看异常的详细信息,什么异常,异常出现在什么位置等等。
在日常的编程中,printStackTrace是一个经常被用的方法,这个方法把异常的详细信息输出到了控制台上。
但是有一些时候我们想要把这些详细的信息以其他的方式展现,网页上、日志里、报警邮件中。
Exception本身的toString,getMessage方法只是对该Exception类的本身信息,并不能帮我们找出异常点。
那么就从printStackTrace着手,将这个方法要输出的信息放到一个String里不就好了吗?
好了先看一下printStackTrace源码
1 public void printStackTrace() { 2 printStackTrace(System.err); 3 } 4 5 public void printStackTrace(PrintStream s) { 6 synchronized (s) { 7 s.println(this); 8 StackTraceElement[] trace = getOurStackTrace(); 9 for (int i=0; i < trace.length; i++)10 s.println("\tat " + trace[i]);11 12 Throwable ourCause = getCause();13 if (ourCause != null)14 ourCause.printStackTraceAsCause(s, trace);15 }16 }
结合我们看到的一般异常的输出
1 java.lang.NumberFormatException: For input string: "ss"2 at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)3 at java.lang.Integer.parseInt(Integer.java:447)4 at java.lang.Integer.parseInt(Integer.java:497)5 at Main.main(Main.java:5)
我们可以先把异常本身输出即e.toString();然后再把StackTraceElement[]输出。
注意到e.getStackTrace() : StackTraceElement[] - Throwable
好了我们需要的都有了输出吧(本文重点):
1 public static String getStackTrace(Exception e) {2 StringBuffer message = new StringBuffer();3 StackTraceElement [] exceptionStack=e.getStackTrace();4 message.append(e.toString());5 for(StackTraceElement ste : exceptionStack) {6 message.append("\n\tat " + ste);7 }8 }
TO BE CONTINUED……
异常——获取异常信息
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。