我用AdoQuery连接SqlServer,当记录出现重复值时,会抛出异常EOleException,这样的异常处理如何处理。
我是如下处理的,不行,大家给看看如何才可以:
try
AdoQuery1.append;
....
AdoQuery1.post;
exception
on E:EOleException do
MessageDlg('出现重复记录!',mtWarning, [mbOK], 0);
end;
我是如下处理的,不行,大家给看看如何才可以:
try
AdoQuery1.append;
....
AdoQuery1.post;
exception
on E:EOleException do
MessageDlg('出现重复记录!',mtWarning, [mbOK], 0);
end;
运行你的*.exe你会发现一切如你所愿。2. 如果你想在调试时不想系统弹出警告对话框,
菜单 Tools\Debugger Options...\
Language Exceptions\Stop on Delphi Exceptions 的钩钩去掉;
Tools\Debugger Options...\
OS Exceptions\Handled by 选user program;on resume选 Run Unhandled3. 你确定你的错误类型一定是EOleException?
所有的错误类型定义在 ...\borland\delphi6\source\trl\Sys\sysutils.pas
凡是 E 打头的几乎全是。但这些类型不一定包括数据库返回的错误信息。try
...
except
on E: Exception do Showmessage(E.Message);
end; //可以获得数据库返回的错误信息的内容
--------------------------------------------------------
try
...
except
on EZeroDivide do HandleZeroDivide;
on EOverflow do HandleOverflow;
on EMathError do HandleMathError;
else
HandleAllOthers; //处理所有其它异常
end;
--------------------------------------------------------
try
...
except
HandleException; //默认处理
end;
try
...
except
on E: Exception do Showmessage(E.Classname);
end;
可以返回错误的类型,但一般数据库错误会笼统的显示 EDatabaseError
--------------------------------------------------------