2013年12月2日 星期一

列印例外訊息 printStackTrace()、toString()、 getMessage()

     當我們處理 Java 例外時,通常會在例外捕獲時列印例外的訊息,一般在輸出訊息通常使用 printStackTrace()、toString()、 getMessage() 這三種方法列印出例外訊息。
     而輸出訊息的格式請參考下面圖示:

  • printStackTrace ()方法 輸出如下
  • java.io.FileNotFoundException: abc.txt (系統找不到指定的檔案。)
     at java.io.FileInputStream.open(Native Method)
     at java.io.FileInputStream.<init>(Unknown Source)
     at java.io.FileInputStream.<init>(Unknown Source)
     at ExceptionExample.someMethod(ExceptionExample.java:7)
     at ExceptionExample.main(ExceptionExample.java:19)
    
  • toString()方法 輸出如下
  • java.io.FileNotFoundException: abc.txt (系統找不到指定的檔案。)
    
  • getMessage()方法 輸出如下
  • abc.txt (系統找不到指定的檔案。)
    
    另外我們故意讓程式丟出 NullPointerException,透過上面三種方法輸出例外訊息,其範例與輸出結果如下:
  • 範例
  •     String str = null;
        try {
             str.length();
        } catch (Exception e) {
             e.printStackTrace();
        }
    
  • printStackTrace()
  • java.lang.NullPointerException
     at ExceptionExample.main(ExceptionExample.java:30)
    
  • toString()
  • java.lang.NullPointerException
    
  • getMessage()
  • null
    
     在上面的 NullPointerException 例子,toString() 與 getMessage() 幾乎沒有任何幫助,基本上,除非是自訂的例外或者可以明顯知道例外的輸出的解果發生在哪個地方,例如,我們只在某個地方開啟特殊的檔案,則我們可以考慮使用  toString() 與 getMessage() 來減少除錯訊息的輸出,否則建議還是直接 printStackTrace() 方法輸出詳細的例外訊息。

[參考資料]




沒有留言: