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

异常处理问题

答題得分者是:nod32
半罐雪碧
一般會員


發表:7
回覆:7
積分:2
註冊:2007-09-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-09-20 11:51:41 IP:59.61.xxx.xxx 訂閱
  with DAOQuery1 do
try
begin
Close;
SQL.Clear;
SQL.Add('select * from a');
Open;
end;
except
begin
Close;
SQL.Clear;
SQL.Add('select * into a from b');
Execute(0);
Close;
SQL.Clear;
SQL.Add('select * from a');
Open;
end;
end;

为什么报错后,except后面的代码执行不了?
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-22 20:03:25 IP:139.175.xxx.xxx 訂閱
除非 DAOQuery1 是 nil
要不然, 應該不可能!

with DAOQuery1 do
try
begin
Close; <- 這裡請設 CheckPoint
SQL.Clear;
SQL.Add('select * from a');
Open;
end;
except
begin
Close; <- 這裡請設 CheckPoint
SQL.Clear;
SQL.Add('select * into a from b');
Execute(0);
Close;
SQL.Clear;
SQL.Add('select * from a');
Open;
end;
end;

再測試一下!
myemail
一般會員


發表:1
回覆:6
積分:1
註冊:2007-01-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-09-24 01:56:00 IP:218.210.xxx.xxx 訂閱


with DAOQuery1 do
try
begin
Close;
SQL.Clear;
SQL.Add('select * from a');
Open;
end;
{
建議在此加一些程式碼, 例如: ShowMessage('Run here !');
假如能跑到這裡, 代表錯誤並不是Open造成的,
}

except
begin
Close;
SQL.Clear;
SQL.Add('select * into a from b');
Execute(0);
Close;
SQL.Clear;
SQL.Add('select * from a');
Open;
end;
end;
nod32
初階會員


發表:3
回覆:29
積分:31
註冊:2007-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-09-24 13:51:27 IP:60.253.xxx.xxx 訂閱
出现异常后很可能DAOQuery1的连接已经坏掉,建议在 except 后面使用一个新的Query,来做这一操作,另外在Except里如果继续操作数据库,那么这里也应当加上异常处理。
半罐雪碧
一般會員


發表:7
回覆:7
積分:2
註冊:2007-09-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-09-25 15:56:39 IP:125.77.xxx.xxx 訂閱
  with DAOQuery do      
try
Close;
SQL.Clear;
SQL.Add('select * from a');
Open;
except
ShowMessage('A')
try
Close;
SQL.Clear;
SQL.Text:='select * into a from b';
Execute(0);
Close;
SQL.Clear;
SQL.Add('select * from a');
Open;
except
ShowMessage('B');
end;
end
b表存在,想用b表去动态建立a表,上面代码调试,程序两次报错说没找到a表,A和B都show出来了,就中间的execute没执行,怎么回事??
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-09-25 18:08:46 IP:139.175.xxx.xxx 訂閱
A和B都show出來了!  這表示什麼? except 是正常的!
但是 except 內的程式又出錯了!
何不把程式碼改為

with DAOQuery do
try
Close;
SQL.Clear;
SQL.Add('select * from a');
Open;
except
ShowMessage('A')
try
Close;
ShowMessage('A1')
SQL.Clear;
ShowMessage('A2')
SQL.Text:='select * into a from b';
ShowMessage('A3')
Execute(0);
ShowMessage('A4')
Close;
ShowMessage('A5')
SQL.Clear;
ShowMessage('A6')
SQL.Add('select * from a');
ShowMessage('A7')
Open;
ShowMessage('A8')
except
ShowMessage('B');
end;
end;
半罐雪碧
一般會員


發表:7
回覆:7
積分:2
註冊:2007-09-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-09-26 08:33:23 IP:59.61.xxx.xxx 訂閱
除A8以外全部show出来了,也就是execute这步相当于不存在,怎么处理......
msfm
一般會員


發表:1
回覆:4
積分:1
註冊:2007-09-29

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-09-29 14:00:45 IP:219.235.xxx.xxx 訂閱
问题出在 工具--调试器选项--语言异常 把停在DELPHI异常勾掉 就可以捕获异常了
半罐雪碧
一般會員


發表:7
回覆:7
積分:2
註冊:2007-09-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-09-29 14:40:32 IP:59.61.xxx.xxx 訂閱
什么意思?
msfm
一般會員


發表:1
回覆:4
積分:1
註冊:2007-09-29

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-09-29 14:53:32 IP:219.235.xxx.xxx 訂閱

===================引 用 半罐雪碧 文 章===================
什么意思?

你按我说的做,你后边的代码就可以执行了。
系統時間:2024-05-17 18:19:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!