Java中的throws與throw關(guan)鍵字
時間:2014-08-19 來源:未知
Java中的(de)異常處理還是(shi)(shi)比較(jiao)有意(yi)思的(de)!就是(shi)(shi)該你(ni)管(guan)就你(ni)管(guan),不是(shi)(shi)你(ni)該管(guan)的(de),好(hao)不要越級(ji)(ji)管(guan)理!不然我這級(ji)(ji)管(guan)理存在就沒有意(yi)義!
Java的異(yi)常(chang)處(chu)理是通過5個關鍵字來實現的:try,catch,throw,throws,finally。這里我主要說一下throw,throws。
throws語句
throws總是(shi)出(chu)現在方法聲(sheng)明(ming)(ming)時(shi),用(yong)(yong)來(lai)標明(ming)(ming)該成(cheng)(cheng)員(yuan)方法可(ke)能拋出(chu)異(yi)(yi)(yi)常(chang)。如(ru)果是(shi)多(duo)個異(yi)(yi)(yi)常(chang),使用(yong)(yong)逗號隔開(kai)。對(dui)大多(duo)數Exception子(zi)類來(lai)說(shuo),Java 編譯器會強迫你(ni)聲(sheng)明(ming)(ming)在一(yi)個成(cheng)(cheng)員(yuan)函數中(zhong)拋出(chu)的(de)異(yi)(yi)(yi)常(chang)的(de)類型。如(ru)果異(yi)(yi)(yi)常(chang)的(de)類型是(shi)Error或 RuntimeException, 或它們的(de)子(zi)類,這個規則不起作用(yong)(yong), 因為(wei)這在程(cheng)序的(de)正常(chang)部(bu)分中(zhong)是(shi)不期待出(chu)現的(de)。 如(ru)果你(ni)想(xiang)明(ming)(ming)確地拋出(chu)一(yi)個RuntimeException,你(ni)必須(xu)用(yong)(yong)throws語(yu)句來(lai)聲(sheng)明(ming)(ming)它的(de)類型。
throw語句
throw總是出現在(zai)方法(fa)體中(zhong),用(yong)(yong)來(lai)拋(pao)出一個異常(chang)。程序會在(zai)throw語句后立即(ji)終止,它后面的(de)語句執行不到(dao)。通過throw拋(pao)出異常(chang)后,如果想(xiang)在(zai)上一級代碼(ma)中(zhong)來(lai)捕獲(huo)并處理異常(chang),則需要(yao)在(zai)拋(pao)出異常(chang)的(de)方法(fa)中(zhong)使用(yong)(yong)throws關鍵字(zi)在(zai)方法(fa)聲明(ming)中(zhong)指(zhi)明(ming)要(yao)拋(pao)出的(de)異常(chang)。
如果一個方法(fa)顯示的(de)標識拋出異常(chang),則必須使用try—catch語句。
以下(xia)是一個自定義異常類的例子(zi):
class MyException extends Exception { //創建自定義異常類
String message; //定義String類型變量
public MyException(String ErrorMessagr) { //父類方法
message = ErrorMessagr;
}
public String getMessage(){ //覆蓋getMessage()方法
return message;
}
}
public class Captor { //創建類
static int div(int x,int y) throws MyException{//定義方法拋出異常
if(y < 0){ //判斷參數是否小于0
throw new MyException("除數不能是負數");//異常信息
}
return x/y;//返回值
}
public static void main(String args[]){ //主方法
try{ //try語句包含可能發生異常的語句
div(3,-1);//調用方法
}catch (MyException e) { //處理自定義異常
System.out.println(e.getMessage()); //輸出異常信息
}
catch (Exception e) { //處理其他異常
System.out.println("程序發生了其他的異常");
//輸出提示信息
}
}
}