請問要如何能在發現錯誤時,讓系統記錄錯誤? |
尚未結案
|
pigbaby
初階會員 發表:2 回覆:84 積分:47 註冊:2002-09-02 發送簡訊給我 |
請問大家..
豬寶寶在寫程式時常發生一些非ap的錯誤而導致程式中斷(像要寫入資料時..網路卻斷線~.~) 在下面的LINK中Fishman 有提到用ApplicationEvents可以捕捉到錯誤
http://delphi.ktop.com.tw/topic.php?topic_id=48495 但是豬寶寶想問的是說
這個捕捉到的踖誤
只有ERROR CODE及說明
卻不知道是那個FUNCTION,PROCEDURE所引起的錯誤
如何能得知是那個PROCEDURE或是FUNCTION的第幾行所發生的錯誤呢?
這樣MIS如果在程式出狀況時,會比較好除錯..
謝謝^^
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
豬寶寶,您好:
提供我的做法,也許有人有更好的解法. 我會在程式可能會出錯的地方以TRY-EXCEPTION-END包起來.舉個例子,在我的MainForm一開啟時會先連進資料庫(我用的是BDE),那麼,我會有個程式碼如下:
procedure TfrmMainForm.Connection; begin try Database1.Connected:=False; Database1.Connected:=True; except on E:Exception do begin raise Exception.Create('連接資料庫失敗,錯誤訊息如下:'#13 e.Message); end; end; end;雖然在exception裡我再舉發一個例外來處理,但這時出現在使用者畫面上的,就不會全是原文錯誤訊息,第一行是"連接資料庫失敗",第二行才是錯誤訊息的原文,第一個訊息是讓使用者看的,第二行訊息是供programmer debug用的. 再舉個例子,在每次TClientDataSet.Active:=True時,也是一樣用try-exception-end包住,然後在exception裡顯示錯中文的錯誤訊息,讓使用者知道現在程式要從資料庫讀取什麼資料時出現錯誤,把錯誤的原文訊息也一併顯示出來,除此之外,也將執行的SQL指令儲存到一個地方,讓程式設計者可以知道到底SQL指令程式有沒有組錯. try ClientDataSet.Active:=True; except on E:Exception do begin ssSQL.SaveToFile('C:\Debug\讀取XXXSQL指令.txt'); raise Exception.Create('讀取XXX資料失敗,錯誤訊息如下:'#13 e.Message); end; end;給您參考 |
pigbaby
初階會員 發表:2 回覆:84 積分:47 註冊:2002-09-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |