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

關於「stop on Delphi Exception」除錯選項的問題?

答題得分者是:jieshu
Dalman
一般會員


發表:27
回覆:22
積分:24
註冊:2002-08-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-08 11:23:52 IP:211.21.xxx.xxx 未訂閱
【求助】 除了關閉「stop on Delphi Exception」除錯選項外,有沒有編譯指令可在某程式碼段中下達不讓 Delphi Debuger 在程式執行時「雞婆」地產生 Exception 事件呢?(因為若關閉「stop on Delphi Exception」除錯選項後,則無法除錯所有的程式碼,我只是要某個程式碼段讓 Delphi Debuger 不去抓取執行錯誤。)
pprayer
高階會員


發表:35
回覆:185
積分:174
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-08 11:30:10 IP:211.21.xxx.xxx 未訂閱
指的是TRY..FINALLY..END 嗎
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-08 11:36:20 IP:61.220.xxx.xxx 未訂閱
可以用
Try
.
.
Except
.
.
End
自行處理錯誤 回首來時路 也無風雨也無晴~~@.@
------
天行健
君子當自強不息~~@.@
Dalman
一般會員


發表:27
回覆:22
積分:24
註冊:2002-08-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-08 12:47:17 IP:211.21.xxx.xxx 未訂閱
可能各位大哥不明白我的意思,用一段程式來表示好了
function AsDateTime(vVal: Variant; vDefaultVal: AnsiString=''): AnsiString;
begin
  try
    result := FormatDateTime('yyyy/mm/dd hh:nn:ss', VarToDateTime(vVal));
  except
    on e: Exception do result := vDefaultVal;
  end;
end;    用法: s := AsDateTime(Now(), '1899/12/30');
上述函式為轉換Variant值為日期時間字串: 【測試範例】 var s: AnsiString; begin s := AsDateTime('ASDR', '1990/01/10'); end; 【說明】 ‧若由 Delphi 編譯成執行檔後,執行「.exe 執行檔」則結果為正確的'1990/01/10'。 ‧若直接按 F9 執行,則 Delphi 就會跳出對話窗告知「無法轉換型別」錯誤。 ‧會跳出對話窗告知「無法轉換型別」錯誤是因為沒有預先關閉「Tools/Debug Options/Language Exceptions」內的「stop on Delphi Exceptions」選項。 ‧但是我既然寫成了 try ... except ... end 如此形式的程式區段,就表示我想自行處理這個「轉換型別」錯誤事件,可是每每按下 F9 執行後,Delphi IDE 就會滿「雞婆」地幫我顯示這個「轉換型別」錯誤訊息對話窗。 ‧不關閉「stop on Delphi Exceptions」選項是因為我想要 Delphi 在按下 F9 後,能幫我找出另一些在執行時期我無法預期的程式錯誤事件,可是在上述函式中我已經「自行預知」可能會發生「轉換型別」錯誤,所以用此寫法來傳回適當的傳回值,並不需要按下 F9 執行後 Delphi 雞婆地顯示訊息通知(這樣子雞婆的顯示訊息會導致整個程式執行中斷然後強迫結束...|||)。 ‧有適當的方法可以在 Delphi IDE 中既按下 F9 執行,又能除錯其它程式段,但又能讓 Delphi debuger 去忽略有 try ... except ... end 區段的錯誤事件顯示訊息嗎? 不知這樣的說明,讓各位大哥知道問題點出在哪裡了嗎?
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-08 13:14:35 IP:203.204.xxx.xxx 未訂閱
引言: ‧有適當的方法可以在 Delphi IDE 中既按下 F9 執行,又能除錯其它程式段,但又能讓 Delphi debuger 去忽略有 try ... except ... end 區段的錯誤事件顯示訊息嗎?
目前我只知道如何設定整個unit不Debug,你可將有可能錯誤又不Debug的程式碼,放到設定不Debug的unit裡。 只要在該unit輸入{$D-},即整個unit不Debug。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-10-08 13:17:19 IP:147.8.xxx.xxx 未訂閱
I don't think there is any solution to this problem (Iwould like to have one myelf!). However you may try to ignore the exception type by adding it to the "Exception Types to Ignore", e.g. EConvertError for conversion error. And I find it sometimes this list of ignorable exceptions does not work properly.
Dalman
一般會員


發表:27
回覆:22
積分:24
註冊:2002-08-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-10-08 13:40:19 IP:211.21.xxx.xxx 未訂閱
對於這個不應該發生的 Delphi IDE 除錯器「雞婆」錯誤訊息顯示事件,我剛試了加入忽略「例外事件」做法,加入了兩個例外事件忽略: 「EVariantTypeCastError」 及 「EConvertError」 雖然可以讓 Delphi IDE 不再產生 try ... except ... end 間的錯誤訊息對話窗,但是否也意謂著所有的程式碼段,若有上述兩個錯誤例外事件發生時,我的程式可能將讓我 Debug 時間拉長許久,唉!
系統時間:2024-04-30 14:39:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!