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

Exception的問題

尚未結案
kc035716
一般會員


發表:10
回覆:14
積分:4
註冊:2004-05-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-23 00:32:43 IP:61.56.xxx.xxx 未訂閱
爬了一下文章 發現下列程式碼可以讓我知道錯誤代碼 try { ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("insert into test (a, b) values('1', '2')"); ADOQuery1->ExecSQL(); } catch(EOleException &e) { String msg; /* e.ErrorCode 就是你的錯誤代碼 */ msg.sprintf("Error Code = [0x%X], Error Message = [%s]", e.ErrorCode, e.Message.c_str()); ShowMessage(msg.c_str()); } catch(...) { ShowMessage("other error"); } 由於我資料庫的ID欄位 已經設成* 唯一鍵 如果資料庫 ID 欄位 已經跟我要新增的相同的話 就會發生key violation 我想要知道這個訊息的錯誤代碼 所以我就將上面的程式改寫成 try { login->Query1->Close(); login->Query1->SQL->Clear(); login->Query1->SQL->Add("insert into location (ID,X_degree,X_min,X_sec,Y_degree,Y_min,Y_sec)"); login->Query1->SQL->Add("values ('" sl->Strings[2] "','" x1 "','" x2 "','" x3 "','" y1 "','" y2 "','" y3 "')"); login->Query1->ExecSQL(); login->Query1->Close(); } catch(EOleException &e) { String msg; /* e.ErrorCode 就是你的錯誤代碼 */ msg.sprintf("Error Code = [0x%X], Error Message = [%s]", e.ErrorCode, e.Message.c_str()); ShowMessage(msg.c_str()); } catch(...) { ShowMessage("other error"); } 然後就發生以下2個錯誤..... Type expected catch statement missing { 這到底是啥米原因....
shinjie
資深會員


發表:12
回覆:275
積分:287
註冊:2003-03-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-23 08:30:32 IP:203.73.xxx.xxx 未訂閱
請將以下程式碼移除 catch(...) { ShowMessage("other error"); } 基本上一個try配一個catch 而上面的程式碼只是跟你說例外處理的方式 完整的架構應該是 try { /*do something*/ } catch(...) { ShowMessage("other error"); }
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。
得之;我幸。不得;我命。
allenchan
資深會員


發表:10
回覆:306
積分:283
註冊:2004-01-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-23 09:14:11 IP:61.62.xxx.xxx 未訂閱
#include "ComObj.hpp" 發表人 - allenchan 於 2004/12/23 09:16:20
kc035716
一般會員


發表:10
回覆:14
積分:4
註冊:2004-05-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-23 09:34:31 IP:61.56.xxx.xxx 未訂閱
嗯 原來沒include include 之後 就沒錯了... 可是又有問題了 我try { login->Query1->Close(); login->Query1->SQL->Clear(); login->Query1->SQL->Add("insert into location (ID,X_degree,X_min,X_sec,Y_degree,Y_min,Y_sec)"); login->Query1->SQL->Add("values ('" sl->Strings[2] "','" x1 "','" x2 "','" x3 "','" y1 "','" y2 "','" y3 "')"); login->Query1->ExecSQL(); login->Query1->Close(); } 但是他沒有跳到catch 去做.....因為他沒ShowMessage 是因為EOleException 的關係嗎 範例程式 是使用ADOQuery1 我是使用 Tquery 我錯誤訊息是EDBEngineError key violation...... 似乎好像不是EOleException 這類型的錯誤? 如果不是的話 是哪種類型的 錯誤呢...... 請高手指點一下 謝謝~
allenchan
資深會員


發表:10
回覆:306
積分:283
註冊:2004-01-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-23 20:15:32 IP:61.62.xxx.xxx 未訂閱
使用 EDBEngineError 看看,相關說明 BCB Help 中有:
try
{
}
catch(EDBEngineError &e)
{
}
catch(...)
{
}    
kc035716
一般會員


發表:10
回覆:14
積分:4
註冊:2004-05-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-23 22:40:14 IP:61.56.xxx.xxx 未訂閱
謝謝~
系統時間:2024-05-19 6:04:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!