JAVA教程第四講Java的例外處理和I/O流4.2

字號(hào):

4.2 例外的處理
    java語言中有兩種例外處理機(jī)制:捕獲例外和聲明拋棄例外。下面我們做詳細(xì)介紹。
    4.2.1 捕獲例外
    捕獲例外是通過try-catch-finally語句實(shí)現(xiàn)的。
    try{
    ......
    }catch( ExceptionName1 e ){
    ......
    }catch( ExceptionName2 e ){
    ......
    }
    ......
    }finally{
    ......
    }
    ◇ try
    捕獲例外的第一步是用try{…}選定捕獲例外的范圍,由try所限定的代碼塊中的語句在執(zhí)行過程中可能會(huì)生成例外對(duì)象并拋棄。
    ◇ catch
    每個(gè)try代碼塊可以伴隨一個(gè)或多個(gè)catch語句,用于處理try代碼塊中所生成的例外事件。catch語句只需要一個(gè)形式參數(shù)指明它所能夠捕獲的例外類型,這個(gè)類必須是Throwable的子類,運(yùn)行時(shí)系統(tǒng)通過參數(shù)值把被拋棄的例外對(duì)象傳遞給catch塊。
    在catch塊中是對(duì)例外對(duì)象進(jìn)行處理的代碼,與訪問其它對(duì)象一樣,可以訪問一個(gè)例外對(duì)象的變量或調(diào)用它的方法。getMessage( )是類Throwable所提供的方法,用來得到有關(guān)異常事件的信息,類Throwable還提供了方法printStackTrace( )用來跟蹤異常事件發(fā)生時(shí)執(zhí)行堆棧的內(nèi)容。例如:
    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語句的順序有關(guān),當(dāng)捕獲到一個(gè)例外時(shí),剩下的catch語句就不再進(jìn)行匹配。因此,在安排catch語句的順序時(shí),首先應(yīng)該捕獲最特殊的例外,然后再逐漸一般化。也就是一般先安排子類,再安排父類。
    ◇ finally
    捕獲例外的最后一步是通過finally語句為例外處理提供一個(gè)統(tǒng)一的出口,使得在控制流轉(zhuǎn)到程序的其它部分以前,能夠?qū)Τ绦虻臓顟B(tài)作統(tǒng)一的管理。不論在try代碼塊中是否發(fā)生了異常事件,finally塊中的語句都會(huì)被執(zhí)行。