亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        Delphi異常處理與程序調(diào)試

        字號(hào):

        在應(yīng)用程序開(kāi)發(fā)中如何檢測(cè)、處理程序的運(yùn)行錯(cuò)誤是一個(gè)很重要的問(wèn)題。在 Delphi 的集成開(kāi)發(fā)環(huán)境( IDE )中提供了一個(gè)完善的內(nèi)置調(diào)試器,可以幫助你發(fā)現(xiàn)大部分程序錯(cuò)誤。但并不是所有的錯(cuò)誤都可以被發(fā)現(xiàn),而且當(dāng)程序涉及到與外設(shè)的數(shù)據(jù)交換或操作外設(shè),如要求用戶輸入、讀寫(xiě)磁盤(pán)等時(shí),錯(cuò)誤的發(fā)生是程序無(wú)法控制的,如輸入非法字符、磁盤(pán)不能讀寫(xiě)等。這些情況不僅會(huì)導(dǎo)致應(yīng)用程序異常中止而且可能引起系統(tǒng)的崩潰。針對(duì)這些問(wèn)題,Delphi同時(shí)提供了一套強(qiáng)大的異常處理機(jī)制。巧妙地利用它,可以使你的程序更為強(qiáng)健,使用更為友好。
            雖然Delphi為應(yīng)用程序提供了一套缺省的自動(dòng)異常處理機(jī)制,即當(dāng)前模塊發(fā)生錯(cuò)誤后退出當(dāng)前模塊并給出錯(cuò)誤信息,而并不立即引起應(yīng)用程序的中止。但當(dāng)應(yīng)用程序執(zhí)行的過(guò)程性很強(qiáng)時(shí),僅僅利用這種方法是不夠的,而且很容易導(dǎo)致程序執(zhí)行的不可預(yù)測(cè)性?!?BR>    12.1 Delphi異常處理機(jī)制與異常類 
            Delphi異常處理機(jī)制建立在保護(hù)塊(Protected Blocks)的概念上。所謂保護(hù)塊是用保留字try和end封裝的一段代碼。保護(hù)塊的作用是當(dāng)應(yīng)用程序發(fā)生錯(cuò)誤時(shí)自動(dòng)創(chuàng)建一個(gè)相應(yīng)的異常類(Exception)。程序可以捕獲并處理這個(gè)異常類,以確保程序的正常結(jié)束以及資源的釋放和數(shù)據(jù)不受破壞。如果程序不進(jìn)行處理,則系統(tǒng)會(huì)自動(dòng)提供一個(gè)消息框。
            異常類是Delphi異常處理機(jī)制的核心,也是Delphi異常處理的主要特色。下面我們對(duì)異常類的概念和體系進(jìn)行詳細(xì)的介紹。
            Delphi提供的所有異常類都是類Exception的子類。用戶也可以從Exception派生一個(gè)自定義的異常類。
            Exception類的定義如下,對(duì)于不常用的成員沒(méi)有列出。  
            {SysUtils 單元中}
            Exception = class(TObject)
            private
            FMessage: PString;
            FHelpContext: Longint;
            function GetMessage: String;
            procedure SetMessage(const Value: String);
            public
            constructor Create(const Msg: String);
            constructor CreateFmt(const Msg: String; const Args: array of const);. . .
            destructor Destroy; override;
            property HelpContext: Longint
            property Message: String;
            property MessagePtr: PString;
            end; 
            Exception的一系列構(gòu)造函數(shù)中最重要的參數(shù)是顯示的錯(cuò)誤信息。而數(shù)據(jù)成員中最重要的也是可被引用的消息字符串(message,messagePtr)。 這些信息分別對(duì)自定義一個(gè)異常類和處理一個(gè)異常類有重要作用。
            Delphi提供了一個(gè)很龐大的異常類體系,這些異常類幾乎涉及到編程的各個(gè)方面。從大的方面我們可以把異常類分為運(yùn)行時(shí)間庫(kù)異常、對(duì)象異常、部件異常三類。下面我們分別進(jìn)行介紹。 
            12.1.1 運(yùn)行時(shí)間庫(kù)異常類(RTL Exception) 
            運(yùn)行時(shí)間庫(kù)異??梢苑譃槠哳?,它們都定義在SysUtils庫(kù)單元中?!?BR>    12.1.1.1 I/O異?!?BR>    I/O異常類EInOutError是在程序運(yùn)行中試圖對(duì)文件或外設(shè)進(jìn)行操作失敗后產(chǎn)生的,它從Exception派生后增加了一個(gè)公有數(shù)據(jù)成員ErrorCode,用于保存所發(fā)生錯(cuò)誤的代碼。這一成員可用于在發(fā)生I/O異常后針對(duì)不同情況采取不同的對(duì)策。
            當(dāng)設(shè)置編譯指示{$I- } 時(shí),不產(chǎn)生I/O異常類而是把錯(cuò)誤代碼返回到預(yù)定義變量IOResult中。