try except 的疑問 |
尚未結案
|
pricejit2
一般會員 發表:53 回覆:18 積分:14 註冊:2005-01-28 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
pricejit2
一般會員 發表:53 回覆:18 積分:14 註冊:2005-01-28 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
引言: 那比如說我要open 一個file 可是我的路徑是錯誤的找不到正確的檔案 那會引發efopenerror 那我又該如何做呢 try filename:=opendialog.filename; //OpneDialog只是純粹傳回檔名,不會發生開檔錯誤 except showmessage('錯誤的路徑'); end;要開啟檔案前,最好先用庫存函數FileExists if FileExists(FileName) then ...... ------------------- 學,然後知不足。 |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
插花:
try ……do something…… //如果这里执行时,不生错误,则下面的except也就不会执行了。 except ……只有当在异常被触发而你想执行一些任务时才使用…… end; 参考实例 procedure TForm1.Button3Click(Sender: TObject); var i:integer; begin try i:=strtoint(Edit1.text); //编译成.exe文件后,当Edit1.text为非数字型时就会发生异常,也即会触发except下面的语句 Edit2.Text:=IntToStr(i); except showmessage('非数字字符'); end; end;或参考:http://delphi.ktop.com.tw/topic.php?topic_id=53541 里面有很详细的介绍try except end 和try finally end的用法和区别! ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ |
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
引言: 那比如說我要open 一個file 可是我的路徑是錯誤的找不到正確的檔案 那會引發efopenerror 那我又該如何做呢您好﹗ 這樣寫并沒有錯﹐只是因為在指定OpenDialog的FileName屬性給filename變數后﹐并沒有進行下一步會引發錯誤的動作(上述...處)﹐比如說用取得的這個filename變數做個Copy的動作﹐這樣的話﹐在Copy檔案時如果該filename變數所指的檔案不存在﹐即會触發Except中的ShowMessage部分﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================try filename:=opendialog.filename; ...; except showmessage('錯誤的路徑'); end;
------
忻晟 |
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
雖然你問的問題很怪, 但是應該可以這樣用用, 可以集中處理錯誤
type EMyError = class(Exception); TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure CheckData; end; procedure HandleMyError(sErrorID: String); var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin try CheckData; except on E: EMyError do HandleMyError(E.Message); end; end; procedure HandleMyError(sErrorID: String); var iErrorId: Integer; SMsg: String; begin iErrorId := StrToIntDef(sErrorID,-1); case iErrorId of 1: SMsg := '忘了輸入字串'; 2: SMsg := '字串長度不足'; else SMsg := '未定義的錯誤'; end; ShowMessage(SMsg); end; procedure TForm1.CheckData; var iLen: Integer; begin iLen := Length(Edit1.Text); if (iLen=0) then raise EMyError.create('1') else if (iLen<5) then raise EMyError.create('2') else if (iLen=5) then raise EMyError.create('abc'); end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |