星空网 > 软件开发 > Java

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

一、三者之间的关系图:

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

二、演示

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

打印结果:

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

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

打印结果:

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

 

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

打印结果:

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

 

附注:

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




原标题:Java中printStackTrace()、toString()、getMessage()的区别

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

如何利用vatjp提升财务业绩:https://www.kjdsnews.com/a/1311823.html
如何利用smt企业买家vat管理税收减负?:https://www.kjdsnews.com/a/1311824.html
如何准备法国vat注册:一份完整的资料列表:https://www.kjdsnews.com/a/1311825.html
如何使用亚马逊fbm来节省跨境vat税费:https://www.kjdsnews.com/a/1311826.html
如何使用vat管理网站快速增强税务知识?:https://www.kjdsnews.com/a/1311827.html
如何使用vat来付款?-- 波兰的快速指南:https://www.kjdsnews.com/a/1311828.html
抱歉,70%的音乐人真要被AI替代了:https://www.kjdsnews.com/a/1840709.html
抱歉,70%的音乐人真要被AI替代了:https://www.xlkjsw.com/news/88102.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流