博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异常——获取异常信息
阅读量:4499 次
发布时间:2019-06-08

本文共 1598 字,大约阅读时间需要 5 分钟。

当出现异常时大家都经常会想查看异常的详细信息,什么异常,异常出现在什么位置等等。

在日常的编程中,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……

转载于:https://www.cnblogs.com/erbin/p/4057114.html

你可能感兴趣的文章
fiddler---使用方法2--抓取其他电脑数据包
查看>>
android 获取坐标【转】
查看>>
球的移动(move)
查看>>
页面禁止双击选中
查看>>
打印流
查看>>
TCP/IP模型的一个简单解释
查看>>
解开最后期限的镣铐(转载)
查看>>
Kth Smallest Element in a BST
查看>>
ubuntu14.04利用aliyun安装docker
查看>>
iphone-命令行编译之--xcodebuild
查看>>
Plan : 破晓
查看>>
GNU make
查看>>
Visual Studio 2008 不能更改安装目录的原因
查看>>
threejs学习笔记04---相机动
查看>>
SAP Skill - How to search a field for which table it belongs
查看>>
parcel+vue入门
查看>>
基数排序
查看>>
Dell笔记本刷回低版本bios的方法
查看>>
HLP帮助文件源文件RTF文件的编写
查看>>
2.30模型字符串拷贝
查看>>