麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

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

2019-11-18 13:52:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  【課前思考】
  1. 什么是例外?java中有哪兩種例外處理機(jī)制?
  2. 字節(jié)流和字符流的基類(lèi)各是什么?
  3. 什么是對(duì)象的串行化?對(duì)象串行化的作用是什么?

難點(diǎn):
  1.如何使用Java中兩種例外處理機(jī)制,拋棄例外和聲明拋棄例外的區(qū)別與聯(lián)系。
  2.處理字符流時(shí),其構(gòu)造方法的參數(shù)是一個(gè)字節(jié)流。
  3.對(duì)象串行化的概念。
4.1 什么是例外

4.1.2 例外處理機(jī)制

拋棄(throw)例外:
  在Java程序的執(zhí)行過(guò)程中,假如出現(xiàn)了異常事件,就會(huì)生成一個(gè)例外對(duì)象。生成的例外對(duì)象將傳遞給Java運(yùn)行時(shí)系統(tǒng),這一例外的產(chǎn)生和提交過(guò)程稱(chēng)為拋棄(throw)例外。

兩種處理例外的機(jī)制:
  ◇ 捕捉例外:
  當(dāng)Java運(yùn)行時(shí)系統(tǒng)得到一個(gè)例外對(duì)象時(shí),它將會(huì)沿著方法的調(diào)用棧逐層回溯,尋找處理這一例外的代碼。找到能夠處理這種類(lèi)型的例外的方法后,運(yùn)行時(shí)系統(tǒng)把當(dāng)前例外對(duì)象交給這個(gè)方法進(jìn)行處理,這一過(guò)程稱(chēng)為捕捉(catch)例外。這是積極的例外處理機(jī)制。假如Java運(yùn)行時(shí)系統(tǒng)找不到可以捕捉例外的方法,則運(yùn)行時(shí)系統(tǒng)將終止,相應(yīng)的Java程序也將退出。
  ◇ 聲明拋棄例外:
  假如一個(gè)方法并不知道如何處理所出現(xiàn)的例外,則可在方法聲明時(shí),聲明拋棄(throws)例外。這是一種消極的例外處理機(jī)制。

4.1.3 例外類(lèi)的層次
  在jdk中,每個(gè)包中都定義了例外類(lèi),而所有的例外類(lèi)都直接或間接地繼續(xù)于Throwable類(lèi)。圖4-1為jdk中例外類(lèi)的繼續(xù)關(guān)系。


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

4.2 例外的處理
4.2.1 捕捉例外
  捕捉例外是通過(guò)try-catch-finally語(yǔ)句實(shí)現(xiàn)的:

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

4.2.2 聲明拋棄例外

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久久久久九九九九 | 青青草最新网址 | 久草在线观看福利视频 | 欧美精品一区自拍a毛片在线视频 | 国产在线精品一区二区三区 | 国产毛片网 | 亚洲午夜一区二区三区 | 日本最新免费二区三区 | 欧美精品成人一区二区在线观看 | 国产日韩一区二区三区在线观看 | 成人毛片免费视频 | 亚洲欧美一区二区三区在线观看 | 羞羞视频免费入口网站 | 欧美成人精品欧美一级乱黄 | 久久国产成人午夜av浪潮 | 国产亚洲精品综合一区 | 亚洲va久久久噜噜噜久久男同 | 性少妇chinesevideo | 91午夜在线观看 | 精品亚洲在线 | 久久国产精品影视 | 国产精品成人一区二区三区电影毛片 | av电影在线观看网址 | av在线收看 | 国产精品久久久久网站 | 黄色特级大片 | 亚洲精品一区二区三区在线看 | 精精国产xxxx视频在线野外 | 成人福利在线视频 | 日日操夜夜操视频 | 高清中文字幕在线 | 免费激情视频网站 | 成人h精品动漫一区二区三区 | 国产精品jk白丝蜜臀av软件 | 毛片在线视频在线播放 | 久久国产精品久久精品国产演员表 | 精品一区二区三区在线观看国产 | 成人在线视频免费播放 | 成人免费福利网站 | 日韩精品一区二区三区中文 | 日韩色电影|