請問try.......語法 |
尚未結案
|
jacosun
一般會員 ![]() ![]() 發表:42 回覆:64 積分:21 註冊:2003-04-18 發送簡訊給我 |
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
shinhrn
中階會員 ![]() ![]() ![]() 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
|
bigdogchina
版主 ![]() ![]() ![]() ![]() ![]() 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
不好意思,插個花:
try語句做爲輔助流程來控制程式的執行,經常與Abort,Exit等搭配使用。
先看看這個:
procedure TForm1.Button1Click(Sender: TObject); begin try if True then Abort; except //Abort激發的異常被捕捉,因此執行except...end中的異常code ShowMessage('Abort'); end; ShowMessage('處理完啦!'); //執行,因爲異常已被處理,如果使用try...finally,則句將不被處理 end;說明:如果Abort被包含在一個try...except中,則只退出tr...except,然後執行except...end塊,最後在繼續執行下面的語句。如果包含在try...finally塊中,則執行finally...end塊然後退出過程 我們再來看看和Exit搭配 procedure TFrom1.Button2Click(Sender: TObject); begin try if True then Exit; finally ShowMessage('Abort'); //執行 end; ShowMessage('處理完啦'); //不執行 end;這裏是用try…finally於之搭配,還可以與之搭配的有Hlt和RunError 而和try經常一起使用的還有continu和Break,再來看看吧: procedure TForm1.Button3Click(Sender: TOjbect); var I: Integer; begin for I := 0 to 2 do begin try if I < 2 then continue; //請注意continue在這裏的作用 ShowMessage(IntToStr(I)); finally ShowMessage('這是finally哦!'); end; end; end;continue如果位於try...finally塊中,則會首先執行finally...end再進入下一個迴圈。上面的例子執行結果是:首先顯示兩次'這是finally哦!'(分別對應I=0和1),然後再顯示一次I(對應I=2),最後再顯示一次I(還是對應I=2). 但是Break的用法又不太一樣了,它如果位於try...finally塊中,則finally...end塊也會得到執行,看下面: procedure TForm1.Button4Click(Sender: TObject); var I: Integer; begin for I := 0 to 2 do begin try if I > 0 then Break; ShowMessage(IntToStr(I)); finally ShowMessage('這是在finally中'); end; end; end;綜上所述,可以看出try...except...end和try...finally...end和Abort,Exit,Halt,RunError,Continue,Break的用法,請參考前面兩位元前輩所述,根據實際情況來實做!謝謝
------
人生在勤,不索何获? |
jacosun
一般會員 ![]() ![]() 發表:42 回覆:64 積分:21 註冊:2003-04-18 發送簡訊給我 |
不過我用的是database
所以改成
try
database.BeginTrans; //資料處理 database.Commit;
EXCEPT
database.RollbackTrans;
SHOWMESSAGE('存檔失敗!');
END;
應該ok!!小小測試過了 謝謝大大。
hagar版大...因為shinhrn大大的才是我想要的,所以分數就給shinhrn大大囉
而版大提供的 若今天我有Table1,Tabel2,Table3做運算,而Table1、Table2都ok也都post了,而Table3運算過程中出錯的話,應該只有Table3的資料表不會有更動吧
引言: try ADOConnection1.BeginTrans; //資料處理 ADOConnection1.CommitTrans; EXCEPT ADOConnection1.RollbackTrans; SHOWMESSAGE('存檔失敗!'); END; 若發生錯誤,會執行RollbackTrans 就可取消所有 資料處理 內的所有異動動作 如(資料表的寫入、刪除等)....< >< > |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |