type
EBadStuff=class(Exception);....
begin
try
...
except
on E:EBadStuff do
...
end;
end;
为什么在程序中E不要create呢?
也就是为什么不要 E:=EBadClass.create()呢?
是不是这里只是起到一个定义变量的作用?在发生异常时,编译器会将异常的类型与EBadClass比较,如果是一样的话,就将异常赋给E变量,则此时EBadClass类型的实例E了?
EBadStuff=class(Exception);....
begin
try
...
except
on E:EBadStuff do
...
end;
end;
为什么在程序中E不要create呢?
也就是为什么不要 E:=EBadClass.create()呢?
是不是这里只是起到一个定义变量的作用?在发生异常时,编译器会将异常的类型与EBadClass比较,如果是一样的话,就将异常赋给E变量,则此时EBadClass类型的实例E了?
raise EBadStuff.Create(...);
之后delphi自己的异常处理机制会将这个对象赋值给最近一层的try..except..中的变量(如E),查不多可以把on E:EBadStuff do看作只是对变量的类型声明吧,
具体的还是要研究汇编码了。。
EBadStuff.Create()产生的实例在on...do语句中,将赋给E:EBadStuff所定义的变量E?