public void printStackTrace()將此 throwable 及其追蹤輸出至標(biāo)準(zhǔn)錯誤流。此方法將此Throwable 對象的堆棧跟蹤輸出至錯誤輸出流,作為字段 System.err 的值。輸出的第一行包含此對象的toString() 方法的結(jié)果。剩余行表示以前由方法 fillInStackTrace()記錄的數(shù)據(jù)。此信息的格式取決于實現(xiàn),但以下示例是最常見的:
java.lang.NullPointerException
at MyClass.mash(MyClass.java:9)
at MyClass.crunch(MyClass.java:6)
at MyClass.main(MyClass.java:3)
本示例通過運行以下程序生成:
class MyClass {
public static void main(String[] args) {
crunch(null);
}
static void crunch(int[] a) {
mash(a);
}
static void mash(int[] b) {
System.out.println(b[0]);
}
}
還有就是,
catch(Exception e){e.printStackTrace() ;} 當(dāng)try語句中出現(xiàn)異常是時,會執(zhí)行catch中的語句,java運行時系統(tǒng)會自動將catch括號中的Exception e 初始化,也就是實例化Exception類型的對象。e是此對象引用名稱。然后e(引用)會自動調(diào)用Exception類中指定的方法,也就出現(xiàn)了e.printStackTrace() ;。printStackTrace()方法的意思是:在命令行打印異常信息在程序中出錯的位置及原因。(這是白話解釋,比較容易理解)關(guān)于System.out.println(e)與e.printStackTrace()
在拋出異常的情況下,有很多方法,System.out.println(e);這個方法打印出異常,并且輸出在哪里出現(xiàn)的異常;e.printStackTrace()也是打印出異常,但是它還將顯示出更深的調(diào)用信息。比如說:
A extends ---> B extends---> C
當(dāng)在創(chuàng)建A的過程中出現(xiàn)問題了,我們拋出異常。<
System.out.println(e),除了標(biāo)準(zhǔn)異常外,只打印at A 然后再向外層層輸出。
e.printStackTrace(),除了標(biāo)準(zhǔn)異常外,打印
at C
at B
at A
.......再向外層調(diào)查。
在向外層調(diào)查的情況下,都一樣。最后都會回到com.sun.midp.main.Main.main
System.out.println();當(dāng)發(fā)生異常時顯示你自己設(shè)定的字符串信息;就比如下面的代碼,try里面進(jìn)行IO操作,你知道要拋出異??隙ㄒ彩荌O異常,catch里面就寫上特定的IOException,自己打印就行了
try{
//function
}
catch(IOException exc){
System.out.println("IOException");
}
e.printStackTrace();是打印異常的堆棧信息,指明錯誤原因,其實當(dāng)發(fā)生異常時,通常要處理異常,這是編程的好習(xí)慣,所以e.printStackTrace()可以方便你調(diào)試程序!
愛華網(wǎng)


