为什么这个异常我不能捕获?

xx_adam 2005-05-20 04:49:58
程序代码如下:

procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
i:=2;
j:=0;
try
j:=i div j;
except
on E:Exception do
showmessage('出错了!');
end;

end;

因为除数为0,计算机计算肯定出错,我现在要将错误捕获,并显示‘出错了!’的提示,上面代码那儿出错?

...全文
91 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wlbfeihu 2005-05-20
  • 打赏
  • 举报
回复
跟踪一下
程序好像没执行啊
应该时编译器优化了
huiwww 2005-05-20
  • 打赏
  • 举报
回复
或者增加一行代码
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
i:=2;
j:=0;
try
j:=i div j;
Button1.Caption:=inttostr(j);//增加的代码
except
on E:Exception do
showmessage('出错了!');
end;
end;
然后你就会发现可疑了
huiwww 2005-05-20
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
i,j:integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
i:=2;
j:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
try
j:=i div j;
except
on E:Exception do
showmessage('出错了!'+e.Message);
end;

end;

end.

你自己分析吧
xtaotao 2005-05-20
  • 打赏
  • 举报
回复
默认在集成环境中调试程序时抛出异常时,调试器先于你的Except捕获,你关闭系统异常窗口后,单击运行按钮会看到你的异常处理.

编译成EXE后就只有你的异常处理了.
xx_adam 2005-05-20
  • 打赏
  • 举报
回复
我刚看了一下,是不是单独运行编译之后的程序就可以捕获?
xx_adam 2005-05-20
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
open_file:file;
begin
try
Rewrite(Open_file);
except
on e:Einouterror do
showmessage('OK');
end;

end;


这个程序运行也有道理,但是运行之后还出弹出系统的错误,并没有弹出ok,我现在目的是让用户看不到系统弹出的错误,而弹出我定义的错误消息!

syl79() :

delphi编译器优化了代码。 那异常处理不是没有用了?


syl79 2005-05-20
  • 打赏
  • 举报
回复
delphi编译器优化了代码。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧