全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2230
推到 Plurk!
推到 Facebook!

try except 的疑問

尚未結案
pricejit2
一般會員


發表:53
回覆:18
積分:14
註冊:2005-01-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-18 11:16:33 IP:220.229.xxx.xxx 未訂閱
try except 要如何運用呢 可以攔捷一我在程式編寫上的錯誤 而不是system定義的錯誤嗎 try ok.text='' except showmessage('忘了輸入字串') end; 為什麼不能執行呢
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-18 12:40:35 IP:211.22.xxx.xxx 未訂閱
Try..Except..End是處理數學以及軟硬體運算時發生錯誤的敘述式,但以本例而言,你是將一個空字串指定給Ok.text,並沒有錯誤。 因此要測試是不是空字串要寫成: < class="code"> if Lenght(Ok.text) = 0 then begin ShowMessage('忘了輸入字串'); exit; end; ------------------- 學,然後知不足。
pricejit2
一般會員


發表:53
回覆:18
積分:14
註冊:2005-01-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-18 13:02:53 IP:220.229.xxx.xxx 未訂閱
那比如說我要open 一個file 可是我的路徑是錯誤的找不到正確的檔案 那會引發efopenerror 那我又該如何做呢 try filename:=opendialog.filename; except showmessage('錯誤的路徑'); end;
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-18 13:22:23 IP:211.22.xxx.xxx 未訂閱
引言: 那比如說我要open 一個file 可是我的路徑是錯誤的找不到正確的檔案 那會引發efopenerror 那我又該如何做呢 try filename:=opendialog.filename; //OpneDialog只是純粹傳回檔名,不會發生開檔錯誤 except showmessage('錯誤的路徑'); end;
要開啟檔案前,最好先用庫存函數FileExists if FileExists(FileName) then ...... ------------------- 學,然後知不足。
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-18 16:25:27 IP:218.15.xxx.xxx 未訂閱
插花:
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-20 18:25:06 IP:202.62.xxx.xxx 未訂閱
引言: 那比如說我要open 一個file 可是我的路徑是錯誤的找不到正確的檔案 那會引發efopenerror 那我又該如何做呢
try 
  filename:=opendialog.filename;
  ...;
except
  showmessage('錯誤的路徑');
end;
您好﹗ 這樣寫并沒有錯﹐只是因為在指定OpenDialog的FileName屬性給filename變數后﹐并沒有進行下一步會引發錯誤的動作(上述...處)﹐比如說用取得的這個filename變數做個Copy的動作﹐這樣的話﹐在Copy檔案時如果該filename變數所指的檔案不存在﹐即會触發Except中的ShowMessage部分﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-07-22 12:32:42 IP:203.69.xxx.xxx 未訂閱
雖然你問的問題很怪, 但是應該可以這樣用用, 可以集中處理錯誤    
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;
系統時間:2024-04-27 13:05:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!