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

首頁 > 編程 > Delphi > 正文

截獲Delphi中的異常

2019-11-18 18:48:25
字體:
來源:轉載
供稿:網友
所謂異常,就是指在程序運行過程中,由于程序本身的問題或是用戶的不當操做而造成的暫
停程序執行和出現錯誤結果的情況。用Delphi編寫過程序的人對異??隙ú粫吧?。異常的來源
是多方面的,引用空指針、賦值越界、被零除等都可以引發一個異常。如果對異常事件不進行適
當的處理,很可能導致整個程序的崩潰。好在Delphi對可能出現的幾乎所有的異常都能自動進行
處理。

  一、Delphi自動處理異常的簡單例子

  1.在Delphi(3.0)集成環境下,選Tools | Environment Options菜單 ,在出現的Environment
 Options窗口中的PReferences頁上有一個Break on exception選項(在左下部)。該選項在缺省
狀態下是被選中的,這樣在Delphi集成環境下運行程序若發生了異常,程序將自動被打斷而返回
Delphi調試狀態,光標停留在出現異常的代碼上,以便編程人員修改?,F在單擊該選項使其不被
選中,然后確定。

  2.新建一個工程,存為Excep.dpr(后面還有用),相應的單元存為Excpunit.pas;在Form1
中放入一個TmaskEdit構件,將其EditMask屬性設定為Date,再放入一個Tbutton構件,雙擊之,
編寫其OnClick事件如下:

  procedure TForm1.BitBtn1Click(Sender: TObject);

  var k:integer;

  begin

  k:=0;

  k:=9 div k;{這里將產生一個被0除的異常}

  end;

  3.存盤并運行程序,在MaskEdit1中隨便寫入一兩個數字,回車,這時會產生(也稱為喚起)
一個異常,彈出如下窗口:


 

  

   這是由于在MaskEdit框中輸入的數據不完整而產生了異常,Delphi自動進行了處理,單擊
“確定”后程序繼續執行。單擊Button1按鈕,又會出現另一個類似窗口,因為這里出現了一個被
零除的異常。

  二、Delphi對異常情況的提示是英文的,對中國人不太習慣,我們可以截獲這些異常,實現用
中文提示。具體做法如下:

  1.修改Button1的OnClick事件如下:

  procedure TForm1.BitBtn1Click(Sender: TObject);

  var k:integer;

  begin

   k:=0;

   try

   k:=9 div k;

   except

   showmessage(′除數不能為零′);

   end;

  end;

  2.存盤并運行程序,單擊Button1后出現的提示框將被中文的“除數不能為零”代替。利用
try......except......end語句是處理異常的一種常用方法,在保留字try后面的語句執行如果
出現異常,就執行保留字except與end間的語句,否則執行end后面的語句,從而代替了Delphi對
異常的缺省處理。與之類似的另一個語句是try......finally......end,與try......except..
....end不同的是,不管try后的語句會不會產生異常,finally后面的語句是一定會被執行的。

  但是,對于像TmaskEdit框產生的這類異常,用try語句就顯得無能為力了,因為我們找不到
寫try語句的地方。我們只能用另一種方法來解決。

  三、Delphi中的每一個項目都有一個Tapplication對象,這是一個不可見的對象。我們可以
通過修改它的OnException事件,來實現對特殊異常的控制,具體做法如下:

  1?痹?Form1的類中聲明一個過程Myexception,該過程與Tapplication的OnException事件有
相同的參數:

  public

  { Public declarations }

  procedure MyException(Sender:TObject;E:Exception);

  2.編寫該過程代碼:

  procedure TForm1.MyException(Sender:TObject;E:Exception);

  begin

  if E is EDBEditError then showmessage(′輸入不符合規則′)

  else

  Application.ShowException(E); {調用缺省的異常處理}

  end;

  3.在Form1的OnCreate事件中為Tapplication的OnException事件賦值:

  procedure TForm1.FormCreate(Sender: TObject);

  begin

  Application.OnException :=MyException;

  end;

  4.存盤并運行程序,在MaskEdit框中隨便輸入一兩個數字,回車,一個中文的提示框將取
代原來的英文提示框。

  四、這里提醒大家注意三點:

  1.Delphi把所有的異常歸納為一個類,即異常類(Exception),每一個特定的異常被視為
一個特例,在c:program filesorlandDelphi 3source tlsys目錄下的sysutils.pas中
有關于Exception類的定義。

  2.Tapplication對象提供了一個過程HandleException來處理在程序中被喚起而未被處理的
異常事件,當我們為Tapplication的OnException事件賦值后,HandleException就會調用新的
過程來代替缺省的出錯信息顯示。我們可以在自己的過程中自由地安排顯示的內容,以達到漢
化的效果。

  3.我們通過IF判斷語句來獲取指定的異常,用一個簡單的辦法可以得到指定異常的名稱。
回到文章開頭的那個例子,這里我們把Break on exception選項選中,再次運行程序,輸入
不當的數字使MaskEdit1產生異常,這時將出現下面的窗口:


 

  

  窗口中第二排的EDBEditError就是該異常的名稱,本文程序中的代碼:

  if E is EDBEditError then showmessage(′輸入不符合規定′)

  就是根據這個名稱寫的。當不知道異常的確切名稱時,就可以從這里獲得信息。在用這種
方法處理異常事件時,一定要小心,應為你已經取代了Delphi的缺省的異常處理,如果處理不
當可能會使系統崩潰。

  以上程序在Windows 95 Delphi 3.0下運行通過。


上一篇:動態賀卡EXE生成器---Delphi中流的應用(9)

下一篇:Delphi編程技巧實例

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

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美中文在线视频| 欧美视频在线视频| 欧美成人午夜剧场免费观看| 欧美成人亚洲成人| 亚洲最大中文字幕| 黄色精品在线看| 最新日韩中文字幕| 欧美理论电影在线播放| 久久久久久久久久久成人| 亚洲第一av网站| 国产精品主播视频| 亚洲а∨天堂久久精品9966| 中文字幕日韩专区| 日韩av毛片网| 国产在线日韩在线| 亚洲欧美综合精品久久成人| 日韩av在线免播放器| 亚洲人精选亚洲人成在线| 久久久久免费精品国产| 欧美日韩激情小视频| 91免费电影网站| 中文字幕一区二区三区电影| 亚洲精品国精品久久99热一| 国产拍精品一二三| 亚洲国产精品va在看黑人| 九九热视频这里只有精品| 在线观看久久av| 亚洲福利视频二区| 久久这里只有精品99| 欧美一区视频在线| 亚洲国产精彩中文乱码av| 九九久久久久久久久激情| 欧美日韩免费看| 日韩电视剧在线观看免费网站| 精品福利视频导航| 久久久成人精品视频| 欧美黄色片在线观看| 日韩在线视频观看正片免费网站| 国产999精品视频| 久久人91精品久久久久久不卡| 岛国av午夜精品| 国产精品久久不能| 中文日韩在线观看| 色综合久久88色综合天天看泰| 亚洲黄色在线观看| 国语对白做受69| www.欧美精品一二三区| 欧美成人午夜影院| 久久免费视频观看| 国产91精品不卡视频| 成人激情视频在线观看| 久久久久久成人| 欧美中文字幕在线视频| 亚洲国产精品成人一区二区| 欧美精品videosex极品1| 欧美在线视频网| 91精品国产色综合久久不卡98口| 日韩av免费观影| 精品久久久久久久久久ntr影视| 91精品在线观| 欧美在线一级va免费观看| 国产精品久久久久免费a∨| 亚洲第一综合天堂另类专| 51色欧美片视频在线观看| 国产在线精品一区免费香蕉| 中文字幕亚洲第一| 国产成人+综合亚洲+天堂| 欧美最顶级的aⅴ艳星| 久久国内精品一国内精品| 国产美女久久精品香蕉69| 亚洲最新在线视频| 97精品国产97久久久久久| 在线播放亚洲激情| 国产精品视频永久免费播放| 成人网址在线观看| 中文字幕欧美精品日韩中文字幕| 日韩中文字幕在线精品| 91网在线免费观看| 精品丝袜一区二区三区| 国产伊人精品在线| 国产精品专区第二| 欧美极品在线播放| 亚洲国产中文字幕在线观看| 国产精品自产拍在线观看中文| 精品欧美国产一区二区三区| 久久久人成影片一区二区三区观看| 色综合亚洲精品激情狠狠| 亚洲第一精品久久忘忧草社区| 成人黄色影片在线| 国产精品爱啪在线线免费观看| 日韩色av导航| 日本精品视频在线观看| 亚洲女人被黑人巨大进入| 亚洲毛片在线观看.| 亚洲美女性视频| 欧美与欧洲交xxxx免费观看| 欧美在线精品免播放器视频| 国产啪精品视频网站| 久久精品国产99国产精品澳门| 国产成人午夜视频网址| 国产精品手机播放| 成人激情春色网| 国产精品久久久久高潮| 日韩中文字幕网站| 国产精品精品视频一区二区三区| 欧美亚洲视频在线看网址| 粉嫩av一区二区三区免费野| 亚洲欧洲高清在线| 日韩毛片中文字幕| 日韩电影中文字幕一区| 成人福利视频在线观看| 国产精品视频精品视频| 日韩在线观看av| 欧美乱大交xxxxx| 午夜精品一区二区三区av| 亚洲成在人线av| 欧美丰满少妇xxxxx做受| 国产精品久久久久久久久久久不卡| 国产成人精彩在线视频九色| 欧美老女人在线视频| 2020国产精品视频| 奇米成人av国产一区二区三区| 国产亚洲人成网站在线观看| 亚洲精品按摩视频| 国产精品91在线| 欧美wwwwww| wwwwwwww亚洲| 国产男女猛烈无遮挡91| 国产一区二区av| 8050国产精品久久久久久| 国产精品私拍pans大尺度在线| 国产精品久久久久久久久久久久| 国产成人亚洲综合青青| 欧美亚洲另类激情另类| 精品人伦一区二区三区蜜桃网站| 国产免费一区视频观看免费| 中文字幕日韩av电影| 蜜臀久久99精品久久久无需会员| 欧美视频中文字幕在线| 最近2019中文免费高清视频观看www99| 亚洲欧洲av一区二区| 亚洲人成绝费网站色www| 亚洲国产精品久久久久| 日韩在线观看免费高清完整版| 国产欧美一区二区三区在线| 视频在线观看一区二区| 亚洲va欧美va在线观看| 国产成人精品在线播放| 日韩免费黄色av| 久久97精品久久久久久久不卡| 国产精品丝袜久久久久久不卡| 久久久爽爽爽美女图片| 日本高清久久天堂| 精品福利樱桃av导航| 亚洲欧美在线磁力| 亚洲黄色av网站| 国产日韩在线精品av| 国产精品久久久久久久久久久久久| 色与欲影视天天看综合网| 成人激情视频在线播放| 日韩电影大全免费观看2023年上| 亚洲丁香久久久| 色七七影院综合| 久久久久久噜噜噜久久久精品|