gpt4 book ai didi

Delphi - 引发后对其自己的构造函数进行异常处理

转载 作者:行者123 更新时间:2023-12-03 15:20:24 25 4
gpt4 key购买 nike

问题是:在引发异常之后,我可以阻止它从它自己的构造函数传播吗?考虑下面的代码:

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 个加薪...我正在尝试找到一个替代解决方案来为其编写错误处理...

最佳答案

输入 raise 语句后,只有两种方法可以避免引发该异常:

  • 先提出其他事情。在即将引发的异常的构造函数中,您可以首先创建并引发不同的异常。这将避免您的程序到达第一个 raise 语句。

  • 终止线程,以便没有任何东西运行。您可以通过多种方式执行此操作,包括 ExitThreadHaltExitProcess,它们在这种情况下几乎都是等效的。您的程序将不再运行,但至少您已阻止它引发该异常!

这些都不能解决您想要解决的问题,但它们做您在问题中要求的事情。最重要的是,无论您尝试做什么,在启动异常引发机制后平息异常都是错误的方法。您无法取消铃声,也无法取消异常。

关于Delphi - 引发后对其自己的构造函数进行异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8533766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com