17.異常(三)之 e.printStackTrace()介紹


  一、關於printStackTrace()方法

  public void printStackTrace()方法將此throwable對象的堆棧追蹤輸出至標准錯誤輸出流,作為System.err的值。輸出的第一行是此對象的toString()方法的結果,剩余行表示以前由方法 fillinStackTrace() 記錄的數據。此信息的格式取決於實現,但以下示例是最常見的:

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

  當try語句中出現異常是時,會執行catch中的語句,java運行時系統會自動將catch括號中的Exception e 初始化,也就是實例化Exception類型的對象。e是此對象引用名稱。然后e(引用)會自動調用Exception類中指定的方法,也就出現了e.printStackTrace() ;。
  printStackTrace()方法的意思是:在命令行打印異常信息在程序中出錯的位置及原因。(這是白話解釋,比較容易理解)
  二、關於System.out.println(e)與e.printStackTrace()

  在拋出異常的情況下,有很多方法,System.out.println(e);這個方法打印出異常,並且輸出在哪里出現的異常;e.printStackTrace()也是打印出異常,但是它還將顯示出更深的調用信息。比如說:
  A extends ---> B extends---> C
  當在創建A的過程中出現問題了,我們拋出異常。<
  System.out.println(e),除了標准異常外,只打印at A 然后再向外層層輸出。
  e.printStackTrace(),除了標准異常外,打印at C 、at B、 at A
   .......再向外層調查。
  在向外層調查的情況下,都一樣。最后都會回到com.sun.midp.main.Main.main。
  System.out.println();當發生異常時顯示你自己設定的字符串信息;就比如下面的代碼,try里面進行IO操作,你知道要拋出異常肯定也是IO異常,catch里面就寫上特定的IOException,自己打印就行了
  try{
    //function
  }catch(IOException exc){
      System.out.println("IOException");
  }
  e.printStackTrace();是打印異常的堆棧信息,指明錯誤原因,其實當發生異常時,通常要處理異常,這是編程的好習慣,所以e.printStackTrace()可以方便你調試程序!


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com