4.2 例外的處理
java語言中有兩種例外處理機制:捕獲例外和聲明拋棄例外。下面我們做詳細介紹。
4.2.1 捕獲例外
捕獲例外是通過try-catch-finally語句實現的。
try{
......
}catch( ExceptionName1 e ){
......
}catch( ExceptionName2 e ){
......
}
......
}finally{
......
}
try
捕獲例外的第一步是用try{…}選定捕獲例外的范圍,由try所限定的代碼塊中的語句在執(zhí)行過程中可能會生成例外對象并拋棄。來源:www.examda.com
catch
每個try代碼塊可以伴隨一個或多個catch語句,用于處理try代碼塊中所生成的例外事件。catch語句只需要一個形式參數指明它所能夠捕獲的例外類型,這個類必須是Throwable的子類,運行時系統(tǒng)通過參數值把被拋棄的例外對象傳遞給catch塊。
在catch塊中是對例外對象進行處理的代碼,與訪問其它對象一樣,可以訪問一個例外對象的變量或調用它的方法。getMessage( )是類Throwable所提供的方法,用來得到有關異常事件的信息,類Throwable還提供了方法printStackTrace( )用來跟蹤異常事件發(fā)生時執(zhí)行堆棧的內容。例如:
try{
......
}catch( FileNotFoundException e ){
System.out.println( e );
System.out.println( "message: "+e.getMessage() );
e.printStackTrace( System.out );
}catch( IOException e ){
System.out.println( e );
}
catch 語句的順序:
捕獲例外的順序和catch語句的順序有關,當捕獲到一個例外時,剩下的catch語句就不再進行匹配。因此,在安排catch語句的順序時,首先應該捕獲最特殊的例外,然后再逐漸一般化。也就是一般先安排子類,再安排父類。
finally
捕獲例外的最后一步是通過finally語句為例外處理提供一個統(tǒng)一的出口,使得在控制流轉到程序的其它部分以前,能夠對程序的狀態(tài)作統(tǒng)一的管理。不論在try代碼塊中是否發(fā)生了異常事件,finally塊中的語句都會被執(zhí)行。
java語言中有兩種例外處理機制:捕獲例外和聲明拋棄例外。下面我們做詳細介紹。
4.2.1 捕獲例外
捕獲例外是通過try-catch-finally語句實現的。
try{
......
}catch( ExceptionName1 e ){
......
}catch( ExceptionName2 e ){
......
}
......
}finally{
......
}
try
捕獲例外的第一步是用try{…}選定捕獲例外的范圍,由try所限定的代碼塊中的語句在執(zhí)行過程中可能會生成例外對象并拋棄。來源:www.examda.com
catch
每個try代碼塊可以伴隨一個或多個catch語句,用于處理try代碼塊中所生成的例外事件。catch語句只需要一個形式參數指明它所能夠捕獲的例外類型,這個類必須是Throwable的子類,運行時系統(tǒng)通過參數值把被拋棄的例外對象傳遞給catch塊。
在catch塊中是對例外對象進行處理的代碼,與訪問其它對象一樣,可以訪問一個例外對象的變量或調用它的方法。getMessage( )是類Throwable所提供的方法,用來得到有關異常事件的信息,類Throwable還提供了方法printStackTrace( )用來跟蹤異常事件發(fā)生時執(zhí)行堆棧的內容。例如:
try{
......
}catch( FileNotFoundException e ){
System.out.println( e );
System.out.println( "message: "+e.getMessage() );
e.printStackTrace( System.out );
}catch( IOException e ){
System.out.println( e );
}
catch 語句的順序:
捕獲例外的順序和catch語句的順序有關,當捕獲到一個例外時,剩下的catch語句就不再進行匹配。因此,在安排catch語句的順序時,首先應該捕獲最特殊的例外,然后再逐漸一般化。也就是一般先安排子類,再安排父類。
finally
捕獲例外的最后一步是通過finally語句為例外處理提供一個統(tǒng)一的出口,使得在控制流轉到程序的其它部分以前,能夠對程序的狀態(tài)作統(tǒng)一的管理。不論在try代碼塊中是否發(fā)生了異常事件,finally塊中的語句都會被執(zhí)行。