【发布时间】:2011-12-16 11:51:24
【问题描述】:
问题是:在引发异常之后,我可以阻止它从它自己的构造函数传播吗?考虑下面的代码:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TMyErrorClass = class(Exception)
constructor Create(aMsg:String);
end;
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
//
raise TMyErrorClass.Create('test');
end;
{ TMyErrorClass}
constructor TMyErrorClass.Create(aMsg: String);
begin
{$IFDEF DEBUG}
Showmessage(aMsg);
{$ELSE}
//here I want to 'kill' the exception
{$ENDIF}
end;
end.
在调用 raise 之后,如何在不添加 try except/finally 的情况下终止异常?
LE:我有一个类似这样的应用程序有近 2000 次加薪...我正在尝试找到一种替代解决方案来为其编写错误处理...
【问题讨论】:
-
如果你要在它还没建成之前就杀死它,你为什么要先把它养起来?不要使用异常,只显示一个消息框。
-
我有一个应用程序,它有近 2000 次这样的加薪......我正在尝试找到一种替代解决方案来为其编写错误处理......
-
尽快回答这个问题 - 你不能这样做。
-
这将使调试构建与发布构建完全不同,这当然不是要走的路。只需为您的应用提供一个处理异常的顶级异常处理程序即可。
-
如果你的程序中有 2000 条不应该存在的指令,那么有人犯了一个很大的错误。解决这个错误的方法是删除那些不应该再存在的 2000 条语句。解决方案是不 改变语言的语义,以便
raise语句不会真正引发任何问题。这将使您的程序的长期维护变得更加困难。
标签: delphi exception-handling delphi-2006