[疑惑]在try...except...中到底是怎样对错误信息进行处理的?

NetCobra 2002-06-26 06:35:53
我用如下的程序连接数据库:
try
begin
ADOConnection.Connected := False;
ADOConnection.ConnectionString := '……' //在这里设定连接字符串
ADOConnection.Connected := True;
end;
except
on E: EDatabaseError do
begin
ErrorMessage := '连接指定的数据源时发生错误,错误信息:' + E.Message;
Application.MessageBox(PChar(ErrorMessage), '错误',
MB_OK + MB_ICONHAND + MB_DEFBUTTON1 + MB_APPLMODAL);
end;
end;

我的想法是在发生错误是显示自己制定的错误信息,但是实际运行情况如下:

1.程序如上,则发生错误时只显示系统的错误,而不显示我的MessageBox;
2.如果我在except中什么也不加(except段中所有内容全部注释掉),则什么错误信息也不显示;
3.如果我在except中加一个MessageBox(),则只显示MessageBox;

现在我对except的错误信息处理方式很迷惑,到底应该怎么写才能达到我的要求?我的想法错在哪里了?
...全文
47 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
2468 2002-06-26
  • 打赏
  • 举报
回复
直接运行你的exe,不要在D环境运行。
gzllich 2002-06-26
  • 打赏
  • 举报
回复
我看应在你的MessageBox后加一句Abort吧?
耙子 2002-06-26
  • 打赏
  • 举报
回复
在程序运行的时候你的异常处理代码会替换系统的.
NetCobra 2002-06-26
  • 打赏
  • 举报
回复
问题解决,用Liujc(阿聪)的办法解决的。
改正后的程序如下:
try
……
except
on E:exception do
begin
ErrorMessage := '连接指定的ODBC数据源时发生错误!' + #10 + #13 + '错误信息:' + E.Message;
Application.MessageBox(PChar(ErrorMessage), '错误信息',
MB_OK + MB_ICONHAND + MB_DEFBUTTON1 + MB_APPLMODAL);
end;
end;

还有几个疑问:1.在作try...except...中应该怎样判断会发生什么错误类型?2.在except段中显示错误信息时,是否我自己的错误信息会屏蔽掉系统错误信息?或者说在except段中错误信息的显示是不是有一个优先权的问题?
NetCobra 2002-06-26
  • 打赏
  • 举报
回复
糟糕,这个问题又发了两遍,希望版主不会扣我的分,是CSDN出错造成的……

谢谢各位,我试试先。
Liujc 2002-06-26
  • 打赏
  • 举报
回复
用on Ex.exception do
westfly 2002-06-26
  • 打赏
  • 举报
回复
用EOLEException来捕捉看看。
耙子 2002-06-26
  • 打赏
  • 举报
回复
EDatabaseError不知道是否支持ADO的错误。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧