加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi – 在引发它之后对它自己的构造函数进行异常处理

发布时间:2020-12-15 09:38:12 所属栏目:大数据 来源:网络整理
导读:问题是:在提出异常之后,我可以阻止它从它自己的构造函数传播吗?考虑下面的代码: unit Unit2;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs;type TMyErrorClass = class(Exception) constructor Create(aMsg
问题是:在提出异常之后,我可以阻止它从它自己的构造函数传播吗?考虑下面的代码:

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的情况下终止异常,而不是在我提出异常的地方?

LE:我有一个应用程序,它有近2000个这样的加注……而我正试图找到一个替代解决方案来为它编写错误处理….

解决方法

一旦你输入了一个加注语句,只有两种方法可以避免提出异常:

>首先提出别的事情.从即将引发的异常的构造函数中,您可以首先创建并引发另一个异常.这将避免你的程序达到第一次加注声明.
>终止线程,这样就无法运行.您可以通过各种方式执行此操作,包括ExitThread,Halt和ExitProcess,它们在此上下文中几乎完全相同.你的程序将不再运行,但至少你已经阻止它提出异常了!

这些都不会解决你试图解决的问题,但他们会按照你在问题中要求的那样做.最重要的是,无论你想做什么,在你已经启动异常提升机制之后平息异常是错误的方法.你不能敲响钟声,也不能解除异常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读