delphi获取程序异常信息
delphi有没有像javathrows在类开始的地方的加入throws后就可以在程序出错的时候看见出错的地方,而不用对具体的地方做异常处理。因为现在在做一个项目,软件运...
delphi 有没有像java throws 在类开始的地方的加入throws后就可以在程序出错的时候看见出错的地方,而不用对具体的地方做异常处理。
因为现在在做一个项目,软件运行的时候有时候会出错,但找了很久,在很多容易出错的地方都加了异常处理,但还是会出错,而又始终找不到。
所以希望找一个类似java这样的全局异常处理。用来查找到出错误的地方
不是这样的,不是在具体的地方加try,而是只在某一处加异常处理,然后获取整个程序出错的地方。
主要是需要将程序里面的不易发现的错误屏蔽掉不要弹出错误对话框。默认为空处理,即使出错也不弹出错误对话框。 展开
因为现在在做一个项目,软件运行的时候有时候会出错,但找了很久,在很多容易出错的地方都加了异常处理,但还是会出错,而又始终找不到。
所以希望找一个类似java这样的全局异常处理。用来查找到出错误的地方
不是这样的,不是在具体的地方加try,而是只在某一处加异常处理,然后获取整个程序出错的地方。
主要是需要将程序里面的不易发现的错误屏蔽掉不要弹出错误对话框。默认为空处理,即使出错也不弹出错误对话框。 展开
2个回答
推荐于2017-11-25 · 知道合伙人软件行家
关注
展开全部
======================补充回答===============
如果是要求获取整个程序出错的地方,那么需要在工程文件里写异常处理代码:
program Project1;
uses
Forms, SysUtils,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
try
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
except
on e: Exception do
Begin
Application.MessageBox(PChar(E.Message), 'error', 16);
End;
end;
end.
=====================================
可以啊,delphi里的异常处理功能很不错,以下是一段示例:
procedure TForm1.Button1Click(Sender: TObject);
var ii:integer;
begin
UsedTime:=0;
Timer1.Enabled :=True;
Try
//以下为你自己的处理过程。中间加入对UsedTime的判断。如果大于你预定的时间,则抛出异常
for ii:=1 to 100000000 do
begin
application.ProcessMessages;
if UsedTime>=2 then
raise EMyException.Create('Your custom error message! For example : Timeout!'); //抛出自定义异常
end;
except
//在此可以用 on E: Exception do begin...end; 来捕获错误信息
Showmessage('TimeOut!');
Timer1.Enabled :=False;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
UsedTime:=UsedTime+1;
end;
end.
//这里面的关键是,在满足你设定的时间条件后,要用 Raise 抛出一个异常!就可以使程序直接进入 Except 语句里。
如果是要求获取整个程序出错的地方,那么需要在工程文件里写异常处理代码:
program Project1;
uses
Forms, SysUtils,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
try
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
except
on e: Exception do
Begin
Application.MessageBox(PChar(E.Message), 'error', 16);
End;
end;
end.
=====================================
可以啊,delphi里的异常处理功能很不错,以下是一段示例:
procedure TForm1.Button1Click(Sender: TObject);
var ii:integer;
begin
UsedTime:=0;
Timer1.Enabled :=True;
Try
//以下为你自己的处理过程。中间加入对UsedTime的判断。如果大于你预定的时间,则抛出异常
for ii:=1 to 100000000 do
begin
application.ProcessMessages;
if UsedTime>=2 then
raise EMyException.Create('Your custom error message! For example : Timeout!'); //抛出自定义异常
end;
except
//在此可以用 on E: Exception do begin...end; 来捕获错误信息
Showmessage('TimeOut!');
Timer1.Enabled :=False;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
UsedTime:=UsedTime+1;
end;
end.
//这里面的关键是,在满足你设定的时间条件后,要用 Raise 抛出一个异常!就可以使程序直接进入 Except 语句里。
更多追问追答
追问
Undeclared identifier: 'MainFormOnTaskBar' 这是怎么回事
procedure TForm1.btn1Click(Sender: TObject);
var bf:Double;
begin
bf:=StrToFloat(edt1.Text);
edt2.Text:=FloatToStr(bf);
end;
在工程文件加了后还是不行的。不运行到except里面。
追答
用 Raise 抛出一个异常!就可以使程序直接进入 Except 语句里。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询