freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第十二章異常處理與程序調(diào)試一-閱讀頁(yè)

2024-09-25 15:32本頁(yè)面
  

【正文】 ESingleStep被 Delphi IDE 的內(nèi)置調(diào)試器處理。 對(duì)象異常類 所謂對(duì)象異常是指非部件的對(duì)象引發(fā)的異常。 流異常類 流異常類包括 EStreamError、 EFCreateError、 EFOpenError、 EFilerError、EReadError、 EWriteError、 EClassNotFound。 流異常引發(fā)的原因如表 。它在 printers庫(kù)單元中定義。 圖形異常類 圖形異常類定義在 Graphic 庫(kù)單元中,包括 EInvalidGraphic 和EInvalidGraphicOperation 兩類。例如下面的代碼: (39。); 由于 并 不 包 含 一 個(gè)合 法 的 圖 形 , 因而 將 引 發(fā) 一 個(gè)EInvalidGraphic 異常。例如試圖改變一個(gè)圖標(biāo) 的大小。 begin AnIcon := 。C:\WINDOWS\39。 := 100。由于許多部件 (如 TListBox,TMemo,TTabSet,… )都有一個(gè)TStrings 類的重要屬性,因而字符串鏈表異常在部件操作編程中非常有用。例如對(duì)如下初始化的列表框: (39。)。Second item39。 (39。)。 Not Exist39。 EListError 異常一般在如下兩種情況下引發(fā): Duplicates 屬性設(shè)置為 dupError 時(shí),應(yīng)用程序試圖加入一個(gè)重復(fù)的字符串; 。其中 EInvalidOperation、 EOutOfResource 在 Controls 單元中定義; EComponentError 在 Classes 單元中定義。 將引發(fā)一個(gè) EInvalidOperation 異常。 專用部件異常類 許多部件都定義了相應(yīng)的部件異常類。許多情況下它們將引發(fā)一個(gè)運(yùn)行時(shí)間異?;?qū)ο螽惓!? 非法的菜單操作,例如試圖刪除一個(gè)不存在的菜單項(xiàng)。 非法的網(wǎng)格操作,比如試圖引用 一個(gè)不存在的網(wǎng)格單元。 DDE 異常。這一異常類在 DDEMan 庫(kù)單元中定義。有關(guān)數(shù)據(jù)庫(kù)的問(wèn)題請(qǐng)讀者參閱本書(shū)第二編。我 們力求給讀者一個(gè)清晰、全面的印象,使讀者能在自己的程序開(kāi)發(fā)中實(shí)際使用它們。雖然在具體的使用中讀者還可能會(huì)碰到許多問(wèn)題,但意識(shí)到應(yīng)該用異常類來(lái)增強(qiáng)程序的健壯性卻是程序設(shè)計(jì)水平走上新臺(tái)階的標(biāo)志。但缺省情況下異常發(fā)生時(shí)程序會(huì)在出錯(cuò)點(diǎn)自動(dòng)退出當(dāng)前模塊,因此需要一種特殊的機(jī)制來(lái)確保即使在異常發(fā)生的情況下釋放資源的語(yǔ)句仍能被執(zhí)行。 需要保護(hù)的資源 一般說(shuō)來(lái)需要保護(hù)的資源包括: ● 文件 ● 內(nèi)存 ● Windows 資源 ● 對(duì)象 比如下面一段程序就會(huì)造成 1K內(nèi)存資源的丟失。 AInt , ADiv: Integer 。 GetMem ( APointer , 1024 )。 FreeMem ( Apointer , 1024 )。 由于程序從異常發(fā)生點(diǎn)退出從而 FreeMem 永遠(yuǎn)沒(méi)有執(zhí) 行的機(jī)會(huì)。 try… finally… end 就形成了一個(gè)資源保護(hù)塊。 對(duì)于 ()中的例子如下代碼即可確保所分配內(nèi)存資源的釋放: var APointer : Pointer 。 begin ADiv := 0。 try AInt := 10 div ADiv 。 end。 下面的例子摘自 ()節(jié),是在文件拷貝中實(shí)現(xiàn)文件資源的保護(hù): procedure CopyFile(const FileName, DestName: TFileName)。 TimeStamp, BytesCopied: Longint。 Destination: TFileName。 begin Destination := ExpandFileName(DestName)。\39。 TimeStamp := FileAge(FileName)。 try Source := FileOpen(FileName, fmShareDenyWrite)。 try Dest := FileCreate(Destination)。 try repeat BytesCopied := FileRead(Source, CopyBuffer^, ChunkSize)。 until BytesCopied ChunkSize。 end。 end。 end。 程序的具體解釋見(jiàn) ()節(jié)。退出當(dāng)前模塊后異常類自
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1