try //这里写如要查异常的代码 except on E:Exception do begin Application.Showmessage(pchar(E.Message),mb_ok+mb_iconeror); end; end;
try // except on E: Exception do begin Application.ShowMessage(E.Message); end; end;
//给你个例子吧 function ComputeSomething; begin try ... except on Err1: EDivByZero do ShowMessage('零不能做除数'); on Err2: EMathError do ShowMessage(Err2.ErrorInfo); on E: Exception do ShowMessage(E.Message); else raise; //重新引发这个异常 end; end;
//这里写如要查异常的代码
except on E:Exception do
begin
Application.Showmessage(pchar(E.Message),mb_ok+mb_iconeror);
end;
end;
//
except
on E: Exception do
begin
Application.ShowMessage(E.Message);
end;
end;
function ComputeSomething;
begin
try
...
except
on Err1: EDivByZero do
ShowMessage('零不能做除数');
on Err2: EMathError do
ShowMessage(Err2.ErrorInfo);
on E: Exception do
ShowMessage(E.Message);
else
raise; //重新引发这个异常
end;
end;
我的意思是要做一个全局的异常处理,就像截获Application.OnException一样,但是Application.OnException只能截获程序未处理的异常,我希望是不管什么异常,我都能先收到,
然后把异常发生的位置,比如源代码的行号,引发异常的原因等记录下来,做个日志.
最近研究了一下,好像能做的就是通过汇编访问FS[0]寄存器,这里保存有当前异常,通过这个可以访问到
异常链表,可是这好像只能是windos异常,delphi自己的异常类捉不到,而且无法获得异常出现的源码行号,只能得到汇编代码的行和地址.
你找到这个通用的类了没有?我也想要一个,毕竟每个代码里都使用try方式会很累人能不能抓取错误,一个窗体、程序由一个统一的地方来进行各种错误处理?
去这里看看