你的位置:首页 > Java教程

[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)




深圳去四川旅游报价跟团去四川旅游多少钱几月去四川旅游最好去四川的旅游团价格去四川旅游必去景点2015中关村美食节有什么好吃的?怎么去? 广西容县都峤山门票包括什么?容县都峤山有另收费吗? 澳门有什么好吃的?_特色小吃有哪些?_港澳 容县都峤山团购怎么预定?都峤山森林公园团购优惠吗? 用一个字形容云南16州市 你觉得是什么 2015西安元宵节活动 大明宫唐人节 2015西安元宵节活动寒窑古会 精彩连连看 2015西安元宵节活动大盘点 七娘山野炊山庄怎么走?深圳七娘山野炊山庄门票多少钱? 七娘山野炊山庄地址?深圳七娘山野炊山庄在哪里? 七娘山野炊山庄好玩吗?深圳七娘山野炊山庄怎么样? 深圳七娘山地质公园在哪里?大鹏半岛国家地质公园地址? 马尔代夫蓝色美人蕉岛怎么样?好玩吗? 泰国的首都是哪里? 曼谷10月份天气如何?适合穿什么? 迪拜11、12月份天气如何? IDT72V3634L10PF Datasheet IDT72V3634L10PF Datasheet IDT5V2528APGGI8 Datasheet IDT5V2528APGGI8 Datasheet IDT71V3558S133PFI Datasheet IDT71V3558S133PFI Datasheet 长春到港澳三天旅游 长春到港澳三天旅游 长春到港澳三天旅游 齐齐哈尔跟团港澳五天四晚 齐齐哈尔跟团港澳五天四晚 齐齐哈尔跟团港澳五天四晚 黑龙江到港澳5天游 黑龙江到港澳5天游 黑龙江到港澳5天游