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

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

違例控制器

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

  當(dāng)然,生成的違例必須在某個(gè)地方中止。這個(gè)“地方”便是違例控制器或者違例控制模塊。而且針對(duì)想捕捉的每種違例類(lèi)型,都必須有一個(gè)相應(yīng)的違例控制器。違例控制器緊接在try塊后面,且用catch(捕捉)要害字標(biāo)記。如下所示:
  
  
  try {
   // Code that might generate exceptions
  } catch(Type1 id1) {
   // Handle exceptions of Type1
  } catch(Type2 id2) {
   // Handle exceptions of Type2
  } catch(Type3 id3) {
   // Handle exceptions of Type3
  }
  
  // etc...
  
  每個(gè)catch從句——即違例控制器——都類(lèi)似一個(gè)小型方法,它需要采用一個(gè)(而且只有一個(gè))特定類(lèi)型的自變量??稍诳刂破鲀?nèi)部使用標(biāo)識(shí)符(id1,id2等等),就象一個(gè)普通的方法自變量那樣。我們有時(shí)也根本不使用標(biāo)識(shí)符,因?yàn)檫`例類(lèi)型已提供了足夠的信息,可有效處理違例。但即使不用,標(biāo)識(shí)符也必須就位。
  控制器必須“緊接”在try塊后面。若“擲”出一個(gè)違例,違例控制機(jī)制就會(huì)搜尋自變量與違例類(lèi)型相符的第一個(gè)控制器。隨后,它會(huì)進(jìn)入那個(gè)catch從句,并認(rèn)為違例已得到控制(一旦catch從句結(jié)束,對(duì)控制器的搜索也會(huì)停止)。只有相符的catch從句才會(huì)得到執(zhí)行;它與switch語(yǔ)句不同,后者在每個(gè)case后都需要一個(gè)break命令,防止誤執(zhí)行其他語(yǔ)句。
  在try塊內(nèi)部,請(qǐng)注重大量不同的方法調(diào)用可能生成相同的違例,但只需要一個(gè)控制器。
  
  1. 中斷與恢復(fù)
  
  在違例控制理論中,共存在兩種基本方法。在“中斷”方法中(java和C++提供了對(duì)這種方法的支持),我們假定錯(cuò)誤非常要害,沒(méi)有辦法返回違例發(fā)生的地方。無(wú)論誰(shuí)只要“擲”出一個(gè)違例,就表明沒(méi)有辦法補(bǔ)救錯(cuò)誤,而且也不希望再回來(lái)。
  另一種方法叫作“恢復(fù)”。它意味著違例控制器有責(zé)任來(lái)糾正當(dāng)前的狀況,然后取得出錯(cuò)的方法,假定下一次會(huì)成功執(zhí)行。若使用恢復(fù),意味著在違例得到控制以后仍然想繼續(xù)執(zhí)行。在這種情況下,我們的違例更象一個(gè)方法調(diào)用——我們用它在Java中設(shè)置各種各樣非凡的環(huán)境,產(chǎn)生類(lèi)似于“恢復(fù)”的行為(換言之,此時(shí)不是“擲”出一個(gè)違例,而是調(diào)用一個(gè)用于解決問(wèn)題的方法)。另外,也可以將自己的try塊置入一個(gè)while循環(huán)里,用它不斷進(jìn)入try塊,直到結(jié)果滿足時(shí)為止。
  從歷史的角度看,若程序員使用的操作系統(tǒng)支持可恢復(fù)的違例控制,最終都會(huì)用到類(lèi)似于中斷的代碼,并跳過(guò)恢復(fù)進(jìn)程。所以盡管“恢復(fù)”表面上十分不錯(cuò),但在實(shí)際應(yīng)用中卻顯得困難重重。其中決定性的原因可能是:我們的控制模塊必須隨時(shí)留意是否產(chǎn)生了違例,以及是否包含了由產(chǎn)生位置專(zhuān)用的代碼。這便使代碼很難編寫(xiě)和維護(hù)——大型系統(tǒng)尤其如此,因?yàn)檫`例可能在多個(gè)位置產(chǎn)生。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 葵青区| 凤台县| 芮城县| 仪征市| 富平县| 石门县| 桐柏县| 锦州市| 开江县| 柯坪县| 南部县| 通化县| 商丘市| 凤城市| 高陵县| 犍为县| 无极县| 西昌市| 精河县| 磐石市| 淮北市| 乌恰县| 峡江县| 廊坊市| 筠连县| 大英县| 乌鲁木齐县| 英吉沙县| 高陵县| 漾濞| 探索| 乳源| 永昌县| 特克斯县| 德安县| 黑龙江省| 杂多县| 集安市| 金山区| 淄博市| 桂林市|