public class Test { public int div(int a, int b) { try { return a/b; } catch (Exception e) { e.printStackTrace(); } return 0; } public static void main(String[] args) { Test test = new Test(); test.div(3, 0); } }
打印結果:
e.printStackTrace()打印出異常,但是它還將顯示出更深的調用信息。它是一層一層的向外調查,最后都會回到com.glxt…..main(主函數)。
它適合調試時使用。
2、toString()演示public class Test { public int div(int a, int b) { try { return a/b; } catch (Exception e) { System.out.println(e.toString()); } return 0; } public static void main(String[] args) { Test test = new Test(); test.div(3, 0); } }
打印結果:
3、getMessage()演示
public class Test { public int div(int a, int b) { try { return a/b; } catch (Exception e) { System.out.println(e.getMessage()); } return 0; } public static void main(String[] args) { Test test = new Test(); test.div(3, 0); } }
打印結果:
附注: 如何獲取e.printStackTrace()的內容
e.printStackTrace()通常是打印在控制臺的,但是,有時候程序上線了需要看這個堆棧的內容就不容易了,一來生產環境打印的東西很多或者很少,二來有時候無法直接查看到,這個時候就需要把這些內容記錄下來,比如記錄到數據庫中,下面的方法可以完整記錄。
public static void main(String[] args) { try { String aa = ""; System.out.println(aa.substring(3));
} catch (Exception e) { e.printStackTrace(); StringWriter sw = new StringWriter(); e.printStackTrace(new PrintWriter(sw, true)); String str = sw.toString(); System.out.println("==========");
System.out.println(str); } }
打印的效果如下:java.lang.StringIndexOutOfBoundsException: String index out of range: -3 at java.lang.String.substring(Unknown Source) at java.lang.String.substring(Unknown Source) at Getc.main(Getc.java:16) ========== java.lang.StringIndexOutOfBoundsException: String index out of range: -3 at java.lang.String.substring(Unknown Source) at java.lang.String.substring(Unknown Source) at Getc.main(Getc.java:16)
新聞熱點
疑難解答