zoukankan      html  css  js  c++  java
  • Java中printStackTrace()、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)

  • 相关阅读:
    HackerRank savita-and-friends
    HackerRank training-the-army
    51Nod 1378 夹克老爷的愤怒
    51Nod 1380 夹克老爷的逢三抽一
    Codeforces 566 D. Restructuring Company
    BZOJ 2822: [AHOI2012]树屋阶梯
    Codeforces Gym 101138 G. LCM-er
    51Nod 1250 排列与交换
    BZOJ 1511: [POI2006]OKR-Periods of Words
    BZOJ 1355: [Baltic2009]Radio Transmission
  • 原文地址:https://www.cnblogs.com/aoguren/p/4661036.html
Copyright © 2011-2022 走看看