我写的一个COM的一个方法中:
try
xxx
except
on e:exception do
begin
raise;
end;我写raise的目的是为了在COM的客户端捕获来处理这个错误,但是,每次执行到RAISE这句,就会出现这个错误:
Project xxxx raise exception class C000005 with message 'access violation at xxxx':read of address 0x0000'.Process stopped.
这个错误就是执行到raise出现的请问是为什么?在COM中这么写异常有什么问题吗?
try
xxx
except
on e:exception do
begin
raise;
end;我写raise的目的是为了在COM的客户端捕获来处理这个错误,但是,每次执行到RAISE这句,就会出现这个错误:
Project xxxx raise exception class C000005 with message 'access violation at xxxx':read of address 0x0000'.Process stopped.
这个错误就是执行到raise出现的请问是为什么?在COM中这么写异常有什么问题吗?
解决方案 »
- Undeclared identifier: 'result'这个错误究竟如何纠正?
- cxgrid分组合计
- 运用事务功能,什么时候才需要使用ADOConnection1->Open这一句?
- 如何对二进制文件写入内容
- DBGrid 更换显示内容的问题,在线等 50分
- 怎样做一个鼠标连击器,即在游戏中按下x键就等于鼠标连击,用户只用移动鼠标即可,不用点了?
- 问几个有关QUERY控件的问题
- 这条sql语句怎么写
- % % % % 为什么在我创建的线程中无法接收消息(TMessage)? % % % % %
- 哪里有《delphi深度探索》的随书源码可以下?
- ◆◆◆ 请问仁兄们都在什么网上书店买书,ChinaPub? DearBook? 当当? 华储? ◆◆◆
- TdxTreeList怎样在程序中实现自动列宽??
xxx
except
on e:exception do
begin
ShowMessage(e.Message); //看看这样行不行
end;
end;
例如Win32就喜欢用GetlastError的,呵呵function aa(..): boolean;
..
result := false
try
xxx
result:=true;
except
end;
例: raise TMyOwnException.Create();
比如
try
...
except
on E: Exception do
ReturnException(E);
end;通过事件回调,或者发消息(对Com不是很熟悉,不清楚具体应该怎么样,效果应该就像是控件的一个Event一样)把异常传回客户端
客户端这样写
procedure OnServerException(e: Exception);
begin
raise e;
end;
这个要求客户端和服务端都有这个异常的声明,如果你对异常只是要求返回一个说明的话,那么只需要传回名字和message就可以了。