怎么获得异常的详细信息 printStackTrace
生活随笔
收集整理的這篇文章主要介紹了
怎么获得异常的详细信息 printStackTrace
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們在捕捉到程序異常時,可以使用e.printStackTrace();來輸出詳細的信息來分析異常。
但是很多時候我們不只是在終端查看,我們會希望將異常的詳細信息得到,然后再做一些展示
比如寫到日志文件中,在jsp頁面中展示等。
那么我們怎么才能獲得和e.printStackTrace();這種詳細的信息呢。
當然一般的e.getMessage();是不能令我們滿意的。下面記錄一個比較好的方式
其實就是利用StackTraceElement [] exceptionStack=e.getStackTrace();
每一個StackTraceElement都代表著一條異常的堆棧信息(就這樣描述吧→_→)
1 package hello;
2
3 public class HelloBB {
4
5 public static void main(String[] args) {
6 String message = null; // 用來接收異常信息
7 try {
8 System.out.println(Integer.parseInt("s"));
9 } catch (NumberFormatException e) {
10 message = getStackTrace(e); // 調用自定義的方法獲取異常信息
11 e.printStackTrace();
12 }
13 try {
14 Thread.sleep(1000L); // 等待一段時間,防止兩次輸出交錯,效果演示需要,可忽略
15 } catch (InterruptedException e) {
16 e.printStackTrace();
17 }
18 System.out.println(message); // 自定義的方法獲得的異常
19 }
20
21 /**
22 *
23 * @param e
24 * @return
25 */
26 public static String getStackTrace(Exception e) {
27 StringBuffer message = new StringBuffer();
28 StackTraceElement [] exceptionStack=e.getStackTrace();
29 message.append(e.toString()); // java.lang.NumberFormatException: For input string: "s"
30 for(StackTraceElement ste : exceptionStack) {
31 message.append("
at " + ste); // at ***.***.**(**)
32 }
33 return message.toString();
34 }
35
36 }
java.lang.NumberFormatException: For input string: "s"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:497)
at hello.HelloBB.main(HelloBB.java:8)
java.lang.NumberFormatException: For input string: "s"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:497)
at hello.HelloBB.main(HelloBB.java:8)
總結
以上是生活随笔為你收集整理的怎么获得异常的详细信息 printStackTrace的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Axure实现Tab选项卡切换功能
- 下一篇: Java NullPointerExce