国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

第四講 Java的例外處理和I/O流

2019-11-18 13:52:52
字體:
來源:轉載
供稿:網友

  【課前思考】
  1. 什么是例外?java中有哪兩種例外處理機制?
  2. 字節流和字符流的基類各是什么?
  3. 什么是對象的串行化?對象串行化的作用是什么?

難點:
  1.如何使用Java中兩種例外處理機制,拋棄例外和聲明拋棄例外的區別與聯系。
  2.處理字符流時,其構造方法的參數是一個字節流。
  3.對象串行化的概念。
4.1 什么是例外

4.1.2 例外處理機制

拋棄(throw)例外:
  在Java程序的執行過程中,假如出現了異常事件,就會生成一個例外對象。生成的例外對象將傳遞給Java運行時系統,這一例外的產生和提交過程稱為拋棄(throw)例外。

兩種處理例外的機制:
  ◇ 捕捉例外:
  當Java運行時系統得到一個例外對象時,它將會沿著方法的調用棧逐層回溯,尋找處理這一例外的代碼。找到能夠處理這種類型的例外的方法后,運行時系統把當前例外對象交給這個方法進行處理,這一過程稱為捕捉(catch)例外。這是積極的例外處理機制。假如Java運行時系統找不到可以捕捉例外的方法,則運行時系統將終止,相應的Java程序也將退出。
  ◇ 聲明拋棄例外:
  假如一個方法并不知道如何處理所出現的例外,則可在方法聲明時,聲明拋棄(throws)例外。這是一種消極的例外處理機制。

4.1.3 例外類的層次
  在jdk中,每個包中都定義了例外類,而所有的例外類都直接或間接地繼續于Throwable類。圖4-1為jdk中例外類的繼續關系。


java中的例外類可分為兩大類:
Error
  動態鏈接失敗,虛擬機錯誤等,通常Java程序不應該捕捉這類例外,也不會拋棄這種例外。
Exception
 1)運行時例外:
  繼續于RuntimeException的類都屬于運行時例外,例如算術例外(除零錯)、數組下標越界例外等等。由于這些例外產生的位置是未知的,Java 編譯器答應程序員在程序中不對它們做出處理。
 2)非運行時例外:
  除了運行時例外之外的其他由Exception 繼續來的例外類都是非運行時的例外,例如FileNotFoundException(文件未找到例外)。Java編譯器要求在程序中必須處理這種例外,捕捉例外或者聲明拋棄例外。

4.2 例外的處理
4.2.1 捕捉例外
  捕捉例外是通過try-catch-finally語句實現的:

try{
  ......
   }catch( ExceptionName1 e ){
   ......
   }catch( ExceptionName2 e ){
   ......
   }
   ......
   }finally{
   ......
  }
  ◇ try
  捕捉例外的第一步是用try{…}選定捕捉例外的范圍,由try所限定的代碼塊中的語句在執行過程中可能會生成例外對象并拋棄。
  ◇ catch
  每個try代碼塊可以伴隨一個或多個catch語句,用于處理try代碼塊中所生成的例外事件。catch語句只需要一個形式參數指明它所能夠捕捉的例外類型,這個類必須是Throwable的子類,運行時系統通過參數值把被拋棄的例外對象傳遞給catch塊。
  在catch塊中是對例外對象進行處理的代碼,與訪問其它對象一樣,可以訪問一個例外對象的變量或調用它的方法。getMessage( )是類Throwable所提供的方法,用來得到有關異常事件的信息,類Throwable還提供了方法PRintStackTrace( )用來跟蹤異常事件發生時執行堆棧的內容。例如:
  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語句為例外處理提供一個統一的出口,使得在控制流轉到程序的其它部分以前,能夠對程序的狀態作統一的治理。不論在try代碼塊中是否發生了異常事件,finally塊中的語句都會被執行。

4.2.2 聲明拋棄例外

1.聲明拋棄例外
  假如在一個方法中生成了一個例外,但是這一方法并不確切地知道該如何對這一異常事件進行處理,這時,一個方法就應該聲明拋棄例外,使得例外對象可以從調用棧向后傳播,直到有合適的方法捕捉它為止。
  聲明拋棄例外是在一個方法聲明中的throws子句中指明的。例如:
  public int read () throws IOException{
        ......
  }
  throws子句中同時可以指明多個例外,之間由逗號隔開。例如:
  public static void main(String args[]) throws
  IOException,IndexOutOfBoundsException {…}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 木里| 伽师县| 庆云县| 安宁市| 拉萨市| 济南市| 贵溪市| 五峰| 保亭| 酉阳| 博客| 西乌珠穆沁旗| 台东县| 浦江县| 柞水县| 哈密市| 嘉峪关市| 马公市| 图木舒克市| 沐川县| 台山市| 安国市| 通城县| 大同县| 南宁市| 澳门| 西宁市| 安宁市| 扶余县| 平武县| 澜沧| 云龙县| 应城市| 垫江县| 汉源县| 清远市| 色达县| 射洪县| 富民县| 清远市| 郯城县|