首页 > 学院 > 开发设计 > 正文

Java中printStackTrace()、toString()、getMessage()的区别

2019-11-15 00:55:43
字体:
来源:转载
供稿:网友
javaPRintStackTrace()、toString()、getMessage()的区别一、三者之间的关系图:

Untitled

二、演示 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);     } }

打印结果:

Untitled

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);     } }

打印结果:

Untitled

 

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);     } }

打印结果:

Untitled

 

附注: 如何获取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)


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表