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

请问如何在错误发生后继续运行?

答題得分者是:shaofu
bloodrose
一般會員


發表:8
回覆:9
積分:3
註冊:2003-10-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-28 09:48:44 IP:218.24.xxx.xxx 未訂閱
现要实现语句一、语句二、语句三。。。不论是否发生错误,都能继续运行。 如用: try 语句一; except end; try 语句二; except end; try 语句三; except end; 。 。 。 这多繁,有没简单一点的法子? 象VB中就可以这样做: on error resume next 语句1 语句2 语句3 。。。
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-28 10:20:36 IP:61.222.xxx.xxx 未訂閱
節錄自delphi的help try ... except on EZeroDivide do HandleZeroDivide; on EOverflow do HandleOverflow; on EMathError do HandleMathError; else HandleAllOthers; end; 如果你可以很明確的事先了解會有幾種error,那就可以如上這樣做... 以EZeroDivide 是一個事先定義好的except class, 當然如果你要繼續問什麼是except class,那麼這個post會沒完沒了一直下去, 總之,你可以去研究的方向就是這樣囉,另外,except class是可以自行再延伸定義的. 交流交流吧...
bloodrose
一般會員


發表:8
回覆:9
積分:3
註冊:2003-10-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-28 10:39:18 IP:218.24.xxx.xxx 未訂閱
谢谢你的解答。可是如果用了异常处理,如果语句一发生错误进行了异常处理,语句一下的语句二、语句三将不再进行,可是我希望无论哪条语句发生了错误,接下的语句都能运行。
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-28 10:54:59 IP:61.222.xxx.xxx 未訂閱
如果是要像vb的 on error resume next 那麼就是要忽略所有的error囉... 如果是的話...那麼就 try except //中間不寫任何程式碼 end 不過這樣做不大好吧...
bloodrose
一般會員


發表:8
回覆:9
積分:3
註冊:2003-10-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-28 11:05:30 IP:218.24.xxx.xxx 未訂閱
还是不行。TRY...EXCEPT...END的用法是,如果在TRY中出现错误,则GOTO到EXCEPT中处理异常,处理完后就结束了,而不会再GOTO到TRY中出现错误的语句处接着运行下一条语句............也就是说,如果在EXCEPT处什么都不写,则该TRY...EXCEPT...END模块直接结束。
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-28 11:12:30 IP:63.84.xxx.xxx 未訂閱
您好﹗    据小弟所知﹐程式迴圈中有Break, Continue, Exit三種強制性敘述方法﹕
Var
  I : Integer;
begin
  For I:=1 to 5 do
    if I=3 then
      begin
        Break; //結果ShowMessage出現1; 2; 結束
        {Continue; //結果ShowMessage出現1; 2; 4; 5; 結束}
        {Exit; //結果ShowMessage出現1; 2}
        ShowMessage(IntToStr(I));
      end;
    ShowMessage('結束');
end;
您可試一下同樣的方法﹐在Try中使用如上的強制性敘述方法﹐參照您的問題來看﹐應是第二種方法罷﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-28 11:20:19 IP:61.222.xxx.xxx 未訂閱
引言: 还是不行。TRY...EXCEPT...END的用法是,如果在TRY中出现错误,则GOTO到EXCEPT中处理异常,处理完后就结束了,而不会再GOTO到TRY中出现错误的语句处接着运行下一条语句............也就是说,如果在EXCEPT处什么都不写,则该TRY...EXCEPT...END模块直接结束。
? 你應該是在ide環境下執行的吧,你可以試著直接開啟執行檔(exe),或是把delphi的 tool->debugger options->language exceptions的頁面把 stop on delphi exceptions不要勾選. 說對了嗎?
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-28 11:23:04 IP:61.222.xxx.xxx 未訂閱
哇...現在才發覺...    BloodRose 天阿....血玫瑰 恐怖喔....
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-11-28 11:32:30 IP:63.84.xxx.xxx 未訂閱
引言: 哇...現在才發覺... BloodRose 天阿....血玫瑰 恐怖喔.... < face="Verdana, Arial, Helvetica"> 這是殺手的代號嗎﹖< > 這兩天休息在床﹐殺手片看多了< > ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
bloodrose
一般會員


發表:8
回覆:9
積分:3
註冊:2003-10-27

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-11-28 13:51:23 IP:218.24.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject); var myFile:file; begin try Rewrite(myFile); // 语句一 form1.Caption := 'STATEMENT 2'; // 语句二 except // on E:exception do; end; end; HAHALI:根据你所说的,我直接运行的。EXE,可是单击按钮BUTTON1后,FORM1的CAPTION并没有变化,也就是说语句二并没有执行;而关闭STOP ON DELPHI EXCEPTIONS,仍然是这个结果。 另:cashxin2002:如你所说,我在EXCEPT。。。END模块里面加上CONTINUE,可惜编译时提示如下错误:“Access violation at address 009B0430 in module 'dcc60.dll',Read of address 00000038”,该错误发生后,源单元出现只读情况。而在TRY 里面语句一后加CONTINUE,仍然出现如此错误。 BLOODROSE这个名字,很血腥吗? 發表人 - bloodrose 於 2003/11/28 13:54:59
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-11-28 13:56:21 IP:61.222.xxx.xxx 未訂閱
你檢查一下form1有建立了嗎? bloodrose就字面上來說是血玫瑰... 不過...根據小弟的朋友夜店王子的回報 bloodrose可是一種調酒的酒名喔 久仰久仰...
bloodrose
一般會員


發表:8
回覆:9
積分:3
註冊:2003-10-27

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-11-28 14:14:58 IP:218.24.xxx.xxx 未訂閱
FORM1当然建立了,因为BUTTON1就在FORM1上。别忘记看:procedure TForm1.Button1Click(Sender: TObject); bloodrose不是什么酒名,也不是什么杀手外号,只是我使用的网名而已。
shaofu
高階會員


發表:5
回覆:136
積分:103
註冊:2003-01-07

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-11-28 15:38:50 IP:210.243.xxx.xxx 未訂閱
引言: 现要实现语句一、语句二、语句三。。。不论是否发生错误,都能继续运行。 这多繁,有没简单一点的法子?
應該是沒有 ( 除非有未公開的 > 也就是說, > - 不過這似乎是個爛點子... < > 發表人 -
bloodrose
一般會員


發表:8
回覆:9
積分:3
註冊:2003-10-27

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-11-28 15:56:15 IP:218.24.xxx.xxx 未訂閱
谢谢各位的解答!
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-11-28 16:21:21 IP:61.222.xxx.xxx 未訂閱
sorry只是看到access violation直覺的想到是否有物件沒有建立, 又剛好看到有form1的存取設定...所以直接聯想到form1    bloodrose的確不太像酒名,印象中倒是有個血腥瑪莉 bloodmary    咳嗯,以上資訊來自小弟的某某朋友夜店王子的回報...    
系統時間:2024-04-29 11:02:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!