二、演示 1、printStackTrace()演示:
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)
新闻热点
疑难解答