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

資料庫存取錯誤時,程式要怎麼辦?

答題得分者是:hagar
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-22 17:16:31 IP:203.204.xxx.xxx 未訂閱
在資料庫存取錯誤時,程式應該要exception才對,我也試了try....exception,但是無效,程式還是會跳出來,並且出現錯誤訊息。 那原來的理由應該是,如果因為登入資料庫的密碼錯誤、權限錯誤,或其他的錯誤,應該只要是示使用者錯誤訊息就好,而不是整個程式「跳掉」,那程式應該怎麼弄呢? 也問了一些人,不過到目前為止,所有的方法還是無效。
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-22 17:20:53 IP:211.21.xxx.xxx 未訂閱
如果方便的話~請你把程式碼POST上來吧~ -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-22 18:38:25 IP:203.204.xxx.xxx 未訂閱
引言: 如果方便的話~請你把程式碼POST上來吧~ -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
try DataModule2.SQLConnection1.LoginPrompt:= False; DataModule2.SQLConnection1.Params.Values['User_Name']:= Edit2.Text; DataModule2.SQLConnection1.Params.Values['Password']:= Edit1.Text; DataModule2.SQLConnection1.Params.Values['HostName']:= Edit4.Text; DataModule2.SQLConnection1.Params.Values['Database']:= Edit3.Text; DataModule2.SQLConnection1.Connected:= True; except ShowMessage('連接發生錯誤,請檢查是否輸入不正確值!!'); end; 請惠予指導,我願意認真學習如何解決這一個問題。謝謝!
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-22 18:56:44 IP:202.39.xxx.xxx 未訂閱
不知道您的無效是什麼意思 如果是說您有用 try .. except 但還是會出現系統的錯誤訊息 這是正常的 只要您不在 IDE 環境下 run 程式就不會這樣。 或者將 Tools -> Debugger Options  的 Language Exceptions 頁中的 Stop on Delphi Exceptions  的核取方塊取消也可以。    -- Everything I say is a lie.
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-03 21:57:58 IP:203.204.xxx.xxx 未訂閱
謝謝您,原來是這個樣子。 不過為什麼每次我看書,它都寫 try.... except 是有 begin.... end;的,但是上面卻有人建議我不要用 begin....end;程式就會正常。 我困惑了,到底是要還是不要?
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-03 22:28:33 IP:202.39.xxx.xxx 未訂閱
如果沒有其它的錯誤處理程序, 就用 try .. except 如果不想在 IDE 內 run 程式, 秀出系統的預設錯誤訊息 就將 Tools -> Debugger Options  的 Language Exceptions 頁中的  Stop on Delphi Exceptions 的核取方塊取消    -- Everything I say is a lie.
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-03 22:32:36 IP:203.204.xxx.xxx 未訂閱
閣下誤解我的意思了, 我的意思是 try begin //這二行 end; //這二行 except 到底需不需要加 begin, end;?? 因為書上都寫要,但有人說不用?另我困惑。
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-03 22:50:02 IP:202.39.xxx.xxx 未訂閱
可要可不要, 參考底下 Help 內的說明: You can write a compound statement that contains only  a single constituent statement; like parentheses in a  complex term, begin and end sometimes serve to  disambiguate and to improve readability. You can  also use an empty compound statement to create a  block that does nothing:    -- Everything I say is a lie.
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-03 23:09:22 IP:203.204.xxx.xxx 未訂閱
哦,那再請教,到底 [XXXXXXX] 該填什麼? 因為這是要看發生的例外而定,我目前的做法是看著它發生錯誤訊息,從它的錯誤訊息當中找。 Exception EDatabaseError in module Project1 at 080C030B. dbExpress Error: Invalid Username/Password. 所以我就填 on EDatabaseError do showmessage('.....');  可是還是「攔截」不到這個例外。究竟發生例外時,要如何判斷這個[XXXXXXX]該填什麼。    比如說,以下的程式碼: try ..... except on [XXXXXXX] do [AAAAAAAA] on [XXXXXXX] do [AAAAAAAA] end; finally    end;    真是再麻煩您一次的解說,謝謝。
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-04 07:40:15 IP:202.39.xxx.xxx 未訂閱
最簡單的
try
  ...
except
  on E: Exception do // Excpetion 為所有例外的最上層的類別
    ...
end;
-- Everything I say is a lie.
系統時間:2024-05-19 23:37:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!