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

正文內(nèi)容

第十二章異常處理與程序調(diào)試一-資料下載頁

2024-09-05 15:32本頁面

【導(dǎo)讀】在應(yīng)用程序開發(fā)中如何檢測、處理程序的運行錯誤是一個很重要的問題。但并不是所有的錯誤都可以被發(fā)現(xiàn),而且當程序涉及到與外。無法控制的,如輸入非法字符、磁盤不能讀寫等。這些情況不僅會導(dǎo)致應(yīng)用程序。異常中止而且可能引起系統(tǒng)的崩潰。針對這些問題,Delphi同時提供了一套強。巧妙地利用它,可以使你的程序更為強健,使用更為友好。發(fā)生錯誤后退出當前模塊并給出錯誤信息,而并不立即引起應(yīng)用程序的中止。程序執(zhí)行的不可預(yù)測性。Delphi異常處理機制建立在保護塊的概念上。保護塊的作用是當應(yīng)用程序發(fā)生錯。誤時自動創(chuàng)建一個相應(yīng)的異常類。以確保程序的正常結(jié)束以及資源的釋放和數(shù)據(jù)不受破壞。異常類是Delphi異常處理機制的核心,也是Delphi異常處理的主要特色。Exception類的定義如下,對于不常用的成員沒有列出。Exception的一系列構(gòu)造函數(shù)中最重要的參數(shù)是顯示的錯誤信息。這一成員可用于在發(fā)生I/O異常后針對不同情況采取不同的。當關(guān)閉溢出檢查,則溢出后變量保留該類整數(shù)的最大范

  

【正文】 發(fā)中實際使用它們。為便于理解我們也提供了一些簡單的說明性示例。雖然在具體的使用中讀者還可能會碰到許多問題,但意識到應(yīng)該用異常類來增強程序的健壯性卻是程序設(shè)計水平走上新臺階的標志。 異常保護 確?;厥辗峙涞馁Y源是程序健壯性的一個關(guān)鍵。但缺省情況下異常發(fā)生時程序會在出錯點自動退出當前模塊,因此需要一種特殊的機制來確保即使在異常發(fā)生的情況下釋放資源的語句仍能被執(zhí)行。而 Delphi 的異常處理正提供了這種機制。 需要保護的資源 一般說來需要保護的資源包括: ● 文件 ● 內(nèi)存 ● Windows 資源 ● 對象 比如下面一段程序就會造成 1K內(nèi)存資源的丟失。 var APointer : Pointer 。 AInt , ADiv: Integer 。 begin ADiv := 0。 GetMem ( APointer , 1024 )。 AInt := 10 div ADiv 。 FreeMem ( Apointer , 1024 )。 end。 由于程序從異常發(fā)生點退出從而 FreeMem 永遠沒有執(zhí) 行的機會。 產(chǎn)生一個資源保護塊 Delphi 提供了一個保留字 finally,用于實現(xiàn)資源的保護: {分配資源 } try {資源使用情況 } finally {釋放資源 } end。 try… finally… end 就形成了一個資源保護塊。 finally 后面的語句是在任何情況下,不論程序是否發(fā)生異常,都會執(zhí)行的。 對于 ()中的例子如下代碼即可確保所分配內(nèi)存資源的釋放: var APointer : Pointer 。 AInt , ADiv : Integer。 begin ADiv := 0。 GetMem ( APointer , 1024 )。 try AInt := 10 div ADiv 。 finally FreeMem ( Apointer , 1024 )。 end。 end。 下面的例子摘自 ()節(jié),是在文件拷貝中實現(xiàn)文件資源的保護: procedure CopyFile(const FileName, DestName: TFileName)。 var CopyBuffer: Pointer。 TimeStamp, BytesCopied: Longint。 Source, Dest: Integer。 Destination: TFileName。 const ChunkSize: Longint = 8192。 begin Destination := ExpandFileName(DestName)。 if HasAttr(Destination, faDirectory) then Destination := Destination + 39。\39。 + ExtractFileName(FileName)。 TimeStamp := FileAge(FileName)。 GetMem(CopyBuffer, ChunkSize)。 try Source := FileOpen(FileName, fmShareDenyWrite)。 if Source 0 then raise (FmtLoadStr(SFOpenError, [FileName]))。 try Dest := FileCreate(Destination)。 if Dest 0 then raise (FmtLoadStr(SFCreateError, [Destination]))。 try repeat BytesCopied := FileRead(Source, CopyBuffer^, ChunkSize)。 if BytesCopied 0 then FileWrite(Dest, CopyBuffer^, BytesCopied)。 until BytesCopied ChunkSize。 finally FileClose(Dest)。 end。 finally FileClose(Source)。 end。 finally FreeMem(CopyBuffer, ChunkSize)。 end。 end。 程序的具體解釋見 ()節(jié)。 在異常保護的情況下,當異常發(fā)生時,系統(tǒng)會自動彈出一個消息框用于顯示異常的消息。退出當前模塊后異常類自動清除。
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1