標籤:
一、三者之間的關係圖:
二、示範 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)
Java中printStackTrace()、toString()、getMessage()的區別