亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

《delphi高手突破》節選二

2019-11-18 18:42:38
字體:
來源:轉載
供稿:網友

完成了第三章 異常及錯誤處理,節選一節

構造函數與異常

這個話題在C++社區中經常會被提起,而在Delphi社區中似乎從來沒有人注意過。也許由于語言的特性,使得Delphi程序員不必關心這個問題。但我想Delphi程序員也應該對該問題有所了解,知道語言為我們提供了什么而使得我們如此輕松,不必理會它。正所謂“身在福中須知?!?。
我們知道,類的構造函數是沒有返回值的,如果構造函數構造對象失敗,不可能依靠返回錯誤代碼。那么,在程序中如何標識構造函數的失敗呢?最“標準”的方法就是:拋出一個異常。
構造函數失敗,意味著對象的構造失敗,那么拋出異常之后,這個“半死不活”的對象會被如何處理呢?
在此,我想讀著有必要先對C++對這種情況的處理方式先有個了解。
在C++中,構造函數拋出異常后,析構函數不會被調用。這種做法是合理的,因為此時對象并沒有被完整構造。
如果構造函數已經做了一些諸如分配內存、打開文件等操作的話,那么C++類需要有自己的成員來記住做過哪些動作。當然,這樣做對于類的實現者來說非常麻煩,因此一般C++類的實現者都避免在構造函數中拋出異常(可以提供一個諸如Init和UnInit的成員函數,由構造函數或類的客戶去調用它們,以處理初始化失敗的情況)。而每一本C++的經典著作所提供的方案是使用智能指針(STL的標準類auto_ptr)。
在Object Pascal中,這個問題變得非常的簡單,程序員不必為此大費周折。如果Object Pascal的類在構造函數中拋出異常,編譯器會自動調用類的析構函數(由于析構函數不允許被重載,可以保證只有唯一一個析構函數,因此編譯器不會迷惑于多個析構函數之中)。析構函數中一般會析構成員對象,而Free()方法保證了不會對nil對象(即尚未被創建的成員對象)調用析構函數,因此在使得代碼簡潔優美的前提下,又保證了安全。
type MyClass = class
PRivate
FStr : PChar; // 字符串指針
public
constructor Create();
destructor Destroy(); override;
end;
 
constructor MyClass.Create();
begin
FStr := StrAlloc(10); // 構造函數中為字符串指針分配內存
StrCopy(FStr, 'ABCDEFGHI');
raise Exception.Create('error'); // 拋出異常,沒有理由,呵呵
end;
 
destructor A.Destroy();
begin
StrDispose(FStr); // 析構函數中釋放內存
WriteLn('Free Resource');
end;
 
var
Obj : TMyClass;
i : integer;
begin
try
Obj := TMyClass.Create();
Obj.Free();
WriteLn('Succeeded');
except
Obj := nil;
WriteLn('Failed');
end;
 
Read(i); // 暫停屏幕,以便觀察運行結果
end.
 
在這段代碼中,構造函數拋出異常,執行的結果是:
Free Resource
Failed
此時的“Free Resource”輸出是由編譯器自動調用析構函數所產生的。
因此,如果類的說明文檔或類的作者告知你,類的構造函數可能會拋出異常,那就要記得用try…except包住它!
C++與Object Pascal對于構造函數拋出異常后的不同處理方式,其實正是兩種語言的設計思想的體現。C++秉承C的風格,注重效率,一切交給程序員來掌握,編譯器不作多余動作。Object Pascal繼承Pascal的風格,注重程序的美學意義,編譯器幫助程序員完成復雜的工作。

上一篇:用DELPHI制作在線程序升級信息查詢

下一篇:《delphi高手突破》節選一

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品露脸av在线| 日韩欧美精品网址| 高清亚洲成在人网站天堂| 亚洲最大在线视频| 亚洲精品久久久久久久久久久久久| 欧美怡红院视频一区二区三区| 色一情一乱一区二区| 欧美壮男野外gaytube| 亚洲色图50p| yw.139尤物在线精品视频| 欧美精品videosex性欧美| 26uuu亚洲伊人春色| 日韩av电影在线播放| 国产精品嫩草视频| 欧美老女人在线视频| 欧美电影在线播放| 91成品人片a无限观看| 97精品一区二区视频在线观看| 色综合视频一区中文字幕| 久久久97精品| 国产精品wwwwww| 亚洲综合精品伊人久久| 日韩成人av在线播放| 大荫蒂欧美视频另类xxxx| 91精品国产91久久久久久| 亚洲欧美国产另类| 亚洲国产天堂久久国产91| 欧美影院在线播放| 欧美一级视频免费在线观看| 狠狠躁天天躁日日躁欧美| 国产亚洲精品久久久| 狠狠躁天天躁日日躁欧美| 一道本无吗dⅴd在线播放一区| 欧美精品免费在线| 日韩视频免费看| 91日韩在线播放| 欧美日韩精品国产| 日本韩国欧美精品大片卡二| 最好看的2019年中文视频| 精品国模在线视频| 欧美性猛交xxxxx免费看| 国产精品久久久久久搜索| 色悠悠国产精品| 日韩一区二区久久久| 亚洲精品成人免费| 91亚洲国产精品| 亚洲天堂视频在线观看| 亚洲人成电影在线| www亚洲欧美| 日韩h在线观看| 91欧美激情另类亚洲| 91免费综合在线| 青草青草久热精品视频在线网站| 国产不卡av在线免费观看| 亚洲第一免费网站| 在线观看视频99| 亚洲成年人影院在线| 中文字幕日韩欧美| 青草青草久热精品视频在线网站| 亚洲精品视频在线观看视频| 一区二区福利视频| 成人精品福利视频| 亚洲人成电影网站| 国产精品美女999| 国产精品草莓在线免费观看| 欧洲精品久久久| 亚洲色图色老头| 亚洲a∨日韩av高清在线观看| 久久综合色88| 亚洲成人亚洲激情| 一区二区三区视频免费在线观看| 欧美日韩成人在线视频| 国语自产偷拍精品视频偷| 欧美黄色性视频| 日韩精品中文字幕在线播放| 国产精品青青在线观看爽香蕉| 亚洲欧美日韩精品| 亚洲视频电影图片偷拍一区| 欧美孕妇毛茸茸xxxx| 在线观看国产精品日韩av| 国产日韩精品在线观看| 欧美日韩国产激情| 美日韩精品免费视频| 亚洲免费视频一区二区| 国产精品久久久久久久9999| 91国自产精品中文字幕亚洲| 欧美国产精品人人做人人爱| 日韩高清免费在线| 国产婷婷色综合av蜜臀av| 日韩国产在线播放| 中文字幕久精品免费视频| 日本亚洲欧洲色α| 国产在线视频一区| 国产精品久久久久久久久借妻| 日韩精品高清视频| 日韩动漫免费观看电视剧高清| 色婷婷亚洲mv天堂mv在影片| 国产日韩中文在线| 92国产精品久久久久首页| 亚洲一区二区三区久久| 欧美日韩精品二区| 久久久久北条麻妃免费看| 日韩电影免费在线观看| 亚洲人午夜精品免费| 欧美性猛交xxxxx水多| 亚洲欧洲国产伦综合| 亚洲国产私拍精品国模在线观看| 午夜精品一区二区三区在线播放| 欧美巨乳在线观看| 高清一区二区三区四区五区| 欧美精品免费播放| 亚洲综合在线中文字幕| 精品在线欧美视频| 日韩在线一区二区三区免费视频| 国产91精品网站| 日韩精品中文字幕有码专区| 国产丝袜精品视频| 亚洲成人精品视频在线观看| 69久久夜色精品国产7777| 欧美性少妇18aaaa视频| 综合国产在线视频| 国产精品亚洲一区二区三区| 亚洲人成电影网站色www| 欧美亚洲国产成人精品| 97香蕉超级碰碰久久免费软件| 久久91精品国产91久久久| 日韩av手机在线看| 中文字幕九色91在线| 在线观看精品自拍私拍| 亚洲电影天堂av| 精品国产一区二区三区久久狼黑人| 国产精品老女人视频| 成人有码视频在线播放| 色婷婷综合久久久久中文字幕1| 欧美日韩亚洲成人| 欧美最顶级的aⅴ艳星| 伊人久久久久久久久久| 中文综合在线观看| 欧美视频在线观看免费网址| 日韩av免费在线看| 精品视频偷偷看在线观看| 亚洲福利影片在线| 亚洲欧美日本另类| 欧美激情奇米色| 国产精品综合网站| 日韩经典一区二区三区| 日韩中文有码在线视频| 日韩大陆欧美高清视频区| 国产精品久久久久久久电影| 26uuu久久噜噜噜噜| 久久夜精品va视频免费观看| 日韩av免费在线播放| 欧美日韩在线另类| 欧美整片在线观看| 岛国av一区二区三区| 亚洲一区美女视频在线观看免费| 欧美尤物巨大精品爽| 欧美日韩不卡合集视频| 国产精品三级在线| 日韩免费观看高清| 国产精品成人播放| 亚洲精品国产精品国自产观看浪潮| 久久久久久久久久久91| 久久九九国产精品怡红院|