程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 捕獲所有違例

捕獲所有違例

編輯:關於JAVA

我們可創建一個控制器,令其捕獲所有類型的違例。具體的做法是捕獲基礎類違例類型Exception(也存在其他類型的基礎違例,但Exception是適用於幾乎所有編程活動的基礎)。如下所示:
catch(Exception e) {
System.out.println("caught an exception");
}
這段代碼能捕獲任何違例,所以在實際使用時最好將其置於控制器列表的末尾,防止跟隨在後面的任何特殊違例控制器失效。
對於程序員常用的所有違例類來說,由於Exception類是它們的基礎,所以我們不會獲得關於違例太多的信息,但可調用來自它的基礎類Throwable的方法:

String getMessage()
獲得詳細的消息。

String toString()
返回對Throwable的一段簡要說明,其中包括詳細的消息(如果有的話)。

void printStackTrace()
void printStackTrace(PrintStream)
打印出Throwable和Throwable的調用堆棧路徑。調用堆棧顯示出將我們帶到違例發生地點的方法調用的順序。
第一個版本會打印出標准錯誤,第二個則打印出我們的選擇流程。若在Windows下工作,就不能重定向標准錯誤。因此,我們一般願意使用第二個版本,並將結果送給System.out;這樣一來,輸出就可重定向到我們希望的任何路徑。
除此以外,我們還可從Throwable的基礎類Object(所有對象的基礎類型)獲得另外一些方法。對於違例控制來說,其中一個可能有用的是getClass(),它的作用是返回一個對象,用它代表這個對象的類。我們可依次用getName()或toString()查詢這個Class類的名字。亦可對Class對象進行一些復雜的操作,盡管那些操作在違例控制中是不必要的。本章稍後還會詳細講述Class對象。
下面是一個特殊的例子,它展示了Exception方法的使用(若執行該程序遇到困難,請參考第3章3.1.2小節“賦值”):
 

//: ExceptionMethods.java
// Demonstrating the Exception Methods
package c09;

public class ExceptionMethods {
  public static void main(String[] args) {
    try {
      throw new Exception("Here's my Exception");
    } catch(Exception e) {
      System.out.println("Caught Exception");
      System.out.println(
        "e.getMessage(): " + e.getMessage());
      System.out.println(
        "e.toString(): " + e.toString());
      System.out.println("e.printStackTrace():");
      e.printStackTrace();
    }
  }
} ///:~


該程序輸出如下:
 

Caught Exception
e.getMessage(): Here's my Exception
e.toString(): java.lang.Exception: Here's my Exception
e.printStackTrace():
java.lang.Exception: Here's my Exception
        at ExceptionMethods.main


可以看到,該方法連續提供了大量信息——每類信息都是前一類信息的一個子集。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved