相关疑难解决方法(0)

有没有办法用JCLDebug捕获所有异常(甚至是那些处理过的异常)?

我想使用JCLDebug记录引发的所有异常,包括处理的异常.

有可能吗?

delphi exception

9
推荐指数
2
解决办法
4232
查看次数

如何在意外删除USB串口时处理异常?

我的Delphi应用程序(使用XE3)需要处理删除USB串行端口时发生的EInOutError异常.应用程序在测试环境中使用,因此不能依赖操作员单击"确定"按钮来关闭"应用程序错误"对话框.

我尝试过以下方法:

  • "try .. except"方法 - 这不会捕获这些异常.我认为这不起作用,因为异常不是由"try"块中的代码引起的.它似乎是一个较低级别的"系统级"例外.

  • 我尝试在表单中添加"ApplicationEvents"组件.OnException方法捕获由我的应用程序生成的"自定义"异常,但不捕获系统级异常.

  • 我还尝试添加一个全局异常钩子(如可能有一个全局异常钩子?).这部分工作 - 它允许我 "应用程序错误"对话框之前执行操作,但不会停止错误对话框.

我很感激任何想法!

delphi exception-handling

5
推荐指数
1
解决办法
1895
查看次数

在尝试除块之前,在Delphi Application.OnException中捕获异常

我想记录delphi应用程序中引发的每个异常.为此,我在项目源代码中用我自己的一个覆盖了Application.OnException事件.

program Project;

uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Logger in 'Logger.pas',
  JCLDebugHandler in 'JCLDebugHandler.pas';

{$R *.res}

begin
   Application.Initialize;
   Application.OnException := TApplicationException.AppException;
   Application.MainFormOnTaskbar := True;
   Application.CreateForm(TForm1, Form1);
   Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)

这很好用,但我没有抓住这个解决方案,在try-except块中捕获了异常.

当在except块中捕获异常时,它不会触发Application.OnException事件.

有没有办法首先在Application.OnException事件而不是except块中捕获它?

delphi try-catch onexception

0
推荐指数
1
解决办法
1373
查看次数