【问题标题】:Change Exception message in Lazarus更改 Lazarus 中的异常消息
【发布时间】:2013-06-04 00:44:55
【问题描述】:

每次我使用raise Exception.create('...'); 时,它都会显示与 Delphi 不同的以下框:

[my message]

Press OK to ignore and risk data corruption.
Press Cancel to kill the program.

我只想更改此默认消息并仅保留我的部分。

有人知道我该怎么做吗?

【问题讨论】:

  • 您可以将自己的方法分配给Application.OnException,..或如果可能的话处理异常...不知道是否有其他方法。
  • @SertacAkyuz 你能给我举个例子吗?当我尝试将处理程序关联到我的 application.onException 时,Lazarus 似乎尝试调用该函数并给我一个错误。
  • procedure OnExcept(Sender : TObject; E : Exception);是一个类的方法,例如TForm1。然后你可以写Application.OnException := OnExcept;
  • 现在我刚刚做了:@onExcept;并编译。根据 Lazarus 文档:Delphi 用户经常混淆这一点,因为 Delphi 允许它并在内部添加 @。如果你更喜欢 Delphi 语法,你可以使用 {$mode Delphi} 而不是 {$mode ObjFPC}。
  • 请继续 :),如果我回答了,我什至不会提及地址运算符。

标签: exception freepascal lazarus delphi


【解决方案1】:

要配置我自己的异常消息,我执行了以下操作:

在应用程序主窗体的私有声明中:

procedure onExcept(sender: TObject; e: Exception);

在主窗体的OnCreate事件中:

procedure TfrmMain.formCreate(sender: TObject);
begin
    application.onException := @onExcept;
end;

procedure TfrmMain.onExcept(sender: TObject; e: Exception);
begin
    //...
end;

请务必注意,如果您使用 Lazarus,则需要 @ 运算符。如果我没有说,编译器会将onExcept 视为函数调用。 Delphi 内部添加了它,所以你不必担心它。

如果您想更改此行为,请使用 {$mode Delphi} 而不是 {$mode ObjFPC} 指令。

【讨论】:

    猜你喜欢
    • 2014-01-22
    • 2012-03-09
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多