線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1510
推到 Plurk!
推到 Facebook!

try catch的問題

答題得分者是:supman
Egn
一般會員


發表:29
回覆:54
積分:16
註冊:2005-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-06 09:49:17 IP:61.230.xxx.xxx 未訂閱
請問一下喔...我現在有兩個function.一開始的寫法是 try { functionA(); functionB(); } catch() {} 結果沒法辦法catch 到A的錯誤... 要寫成 try{ functionA(); } catch{} try{ functionB(); } catch{} 才可以ㄝ...為什麼呢... 因為我兩個catch裡面做的事都一樣,變成我要寫兩次....
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-06 10:00:47 IP:61.70.xxx.xxx 未訂閱
做一樣的事也就會發生一樣的錯誤,因此當functiona()發生錯誤,則直接跳到catch並不會去執行到functionb,他會中斷執行 try { functionA();//發生錯誤 functionB();//不執行. } catch() {} 補充:使用f8單步執行你就可以看到他跑的流程了. 發表人 - supman 於 2005/07/06 10:04:03
Egn
一般會員


發表:29
回覆:54
積分:16
註冊:2005-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-06 10:53:32 IP:61.230.xxx.xxx 未訂閱
我想大大可能誤會我的意思了...functionA和B做的事不一樣... 雖然說在catch中,我要它們做的事是一樣的.. try { functionA(); functionB(); } 而問題是程式抓不到functionA發生錯誤,然後程式就被中斷了...要分開寫才能抓到A有錯誤
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-06 11:36:39 IP:61.70.xxx.xxx 未訂閱
抱歉,我會錯意,但不管是否做的事情是不是一樣的,try catch的用法就是這樣,當發生錯誤時,就會中斷執行 下面的程式而跑到catch去. 因此若您要檢查兩個function處理過程中是否發生錯誤,就是要分開寫. try { functionA(); functionB(); } catch() {}    可以設立中斷點,按f8看他的執行流程. 而問題是程式抓不到functionA發生錯誤,然後程式就被中斷了...要分開寫才能抓到A有錯誤 你這句話我覺得怪怪的,如果放在一起應該是functiona發生錯誤時,functionb抓不到錯誤才對. 如果你要用這樣的寫法是沒辦法的. 你想想看,BCB在自動建立Form那邊也有try catch,當發生錯誤時,程式能執行嗎???不行吧,因為他就不會去做後面建立form的動作了. 按照你這樣需求不應該是把try去包住那兩個funtion,應該要把try放在funtion內才正確,然後再他發生錯誤時去return ErrorCode,讓外面接收. Errorcode=functionA(); Errorcode=functionB(); if (ErrorCode=xxxx) xxxx if (ErrorCode=xxxx) xxxx .... 發表人 - supman 於 2005/07/06 11:45:36
Egn
一般會員


發表:29
回覆:54
積分:16
註冊:2005-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-06 12:02:43 IP:61.230.xxx.xxx 未訂閱
try { functionA(); functionB(); } catch() {} 我的functionA是open一個C槽的檔案,我是compile完後直接run exe檔,我故意把c槽那個檔案拿掉,結果就出現一個對話框說程式錯誤,然後程式就中斷了.. 所以我才說為什麼沒有抓到A的catch...而直接中段程式... 看來是要寫兩次...
系統時間:2024-11-25 11:38:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!