【发布时间】:2015-08-18 13:30:05
【问题描述】:
早在我加入公司之前,我就有一段用 Delphi 编写的遗留代码,而我的 IDE 的行为让我对自己的技能产生了很多怀疑。
在加载 DLL 并从 DLL 分配函数 OpenDB、GetError 和 GetErrorStr 后,将调用此代码:
If @OpenDB <> nil then
begin
DB_num := OpenDB((PAnsiChar(file)));
if DB_num = -1 then
begin
err := GetError;
ErrorString := GetErrorString(err);
raise Exception.Create(ErrorString);
Exit;
end
end else
Exit;
OpenDB 返回 -1 并且 GetErrorString 返回错误消息并引发异常。没什么大不了的,存在错误的数据库并且总是会发生错误。让我明白的是,在引发异常后,“......应用程序定义的异常(代码 0x0eedfade)在......”弹出。之后我会遇到访问冲突。
【问题讨论】:
-
很难在没有更多上下文的情况下发表评论。
-
很可能是内存损坏。
-
等等,所以,在引发异常后,您会看到一个弹出窗口说引发了异常?您还期望发生什么?
-
@S.Langhammer 是的,这就是 IDE 告诉您引发了异常。
-
检查您的异常处理。任何unhandled Delphi exception 都会产生代码
0x0eefade。