如何深度捕捉错误??--如果解决了可以减少20%以上的维护费用和时间,所以都请都来看看 (50分)

  • 主题发起人 主题发起人 zohzjf
  • 开始时间 开始时间
Z

zohzjf

Unregistered / Unconfirmed
GUEST, unregistred user!
为了以后的维护--程序员不用到客户那里,只要从客户那里取得客户错误日志就可以了。
所以要取的错误的信息。而且可以节约大量的时间,不用盲目地找错误原因,和错误发生的代码段

现在我只能做到下边的深度,但还不够,
我想像pb那样,能够取得错误发生的过程的名字,how to do??
我知道可能在onmessage事件中捕捉,但我不知道tmsg的取值范围
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException:=onerror;
end;
procedure TForm1.onerror(Sender: TObject; E: Exception);
begin
self.Caption:=e.Message;
Label1.Caption:=tform(Sender).ActiveControl.ClassName;
Label1.Caption:= e.Message;
Label2.Caption:=self.ActiveControl.Name ;
Label3.Caption:=e.ClassName;
Label4.Caption:=e.ClassParent ;
end;

不要光看不说话,帮助提前一下
 
我的做法是除了你如上处理以外,在可能出错的代码(比如Query.ExecSQL Open),都
进行异常处理
procedure ShowError(const Message: string; const NeedToLog: Boolean)
begin
MessageBox(..);
if NeedToLog then 把错误日子写如数据库
end;

try
except
on E: Exception do
ShowError('...出错了:' + E.Message, True);
end;
 
qdyoung:我也是这样写的,
不过我想在深一些;
想的到出错的过程名字,
据说pb可以,所以我认为,delphi也可以,只是隐藏了,
我想把它挖出来,这样开发时会省很大的功夫的
 
估计只有用assert才行
 
用 的话assert我必须在每一个可能的地方写这和用
try…………except
几乎没有区别呀;
我是想用一个过程代替所以的
try
…………
except
{写入日志}
end
因为我不可能在每一个地方都用try…………except……的
 
我的看法:
pb可以,是因为PB是伪编译的。
delphi是真编译的。delphi下,我想如果能获取编译后带的调试信息的话,或许可以
显示出错的过程名字。
 
高手就是高手,一说就说本质性的东西;不讲对不对:)
看来是没办法了,谁要是有办法,请继续,我会再开张帖子给分的。
 
后退
顶部