Java編程中throw和throws子句的使用方法
Java throw:異常的拋出
程序可以用throw語句拋出明確的異常。Throw語句的通常形式如下:
throw ThrowableInstance;
這里,ThrowableInstance一定是Throwable類類型或Throwable子類類型的一個對象。簡單類型,例如int或char,以及非Throwable類,例如String或Object,不能用作異常。有兩種可以獲得Throwable對象的方法:在catch子句中使用參數或者用new操作符創(chuàng)建。
程序執(zhí)行在throw語句之后立即停止;后面的任何語句不被執(zhí)行。最緊緊包圍的try塊用來檢查它是否含有一個與異常類型匹配的catch語句。如果發(fā)現了匹配的塊,控制轉向該語句;如果沒有發(fā)現,次包圍的try塊來檢查,以此類推。如果沒有發(fā)現匹配的catch塊,默認異常處理程序中斷程序的執(zhí)行并且打印堆棧軌跡。
下面是一個創(chuàng)建并拋出異常的例子程序,與異常匹配的處理程序再把它拋出給外層的處理程序。
/pic/pic/p>
該程序有兩個機會處理相同的錯誤。首先,main()設立了一個異常關系然后調用demoproc( )。 demoproc( )方法然后設立了另一個異常處理關系并且立即拋出一個新的NullPointerException實例,NullPointerException在下一行被捕獲。異常于是被再次拋出。下面是輸出結果:
Caught inside demoproc.Recaught: java.lang.NullPointerException: demo
該程序還闡述了怎樣創(chuàng)建Java的標準異常對象,特別注意下面這一行:
throw new NullPointerException("demo");
這里,new用來構造一個NullPointerException實例。所有的Java內置的運行時異常有兩個構造函數:一個沒有參數,一個帶有一個字符串參數。當用到第二種形式時,參數指定描述異常的字符串。如果對象用作 print( )或println( )的參數時,該字符串被顯示。這同樣可以通過調用getMessage( )來實現,getMessage( )是由Throwable定義的。
Java throws子句
如果一個方法可以導致一個異常但不處理它,它必須指定這種行為以使方法的調用者可以保護它們自己而不發(fā)生異常。做到這點你可以在方法聲明中包含一個throws子句。一個 throws 子句列舉了一個方法可能拋出的所有異常類型。這對于除Error或RuntimeException及它們子類以外類型的所有異常是必要的。一個方法可以拋出的所有其他類型的異常必須在throws子句中聲明。如果不這樣做,將會導致編譯錯誤。
下面是包含一個throws子句的方法聲明的通用形式:
type method-name(parameter-list) throws exception-list{ /pic/p>
這里,exception-list是該方法可以拋出的以有逗號分割的異常列表。
下面是一個不正確的例子。該例試圖拋出一個它不能捕獲的異常。因為程序沒有指定一個throws子句來聲明這一事實,程序將不會編譯。
/pic/p>
為編譯該程序,需要改變兩個地方。第一,需要聲明throwOne( )引發(fā)IllegalAccess Exception異常。第二,main( )必須定義一個try/catch 語句來捕獲該異常。正確的例子如下:
/pic/p>
下面是例題的輸出結果:
inside throwOnecaught java.lang.IllegalAccessException: demo
【Java編程中throw和throws子句的使用方法】相關文章:
JAVA中throws和throw有什么區(qū)別11-26
JAVA編程String和StringBuffer01-27
Java編程中this關鍵字與super關鍵字的使用方法09-03
Java編程中獲取路徑的方法12-16
Java編程中異常處理的方法11-18
Java編程中異常處理的最優(yōu)法12-16
java編程術語03-09