如何抛出Delphi无法捕获的异常?

时间:2012-12-14 17:24:20

标签: delphi exception exception-handling

是否有可能在Delphi中构造一段代码片段,使得假设的EChuckNorrisException无法捕获?

对于我刚刚发现的Java编程语言,Uncatchable ChuckNorrisException

中的已经回答了这个问题。

2 个答案:

答案 0 :(得分:9)

没有。在Delphi中,可以引发任何对象(TObject后代),但按照惯例,这通常仅限于从基类Exception类下降的对象。并且可以创建一个覆盖任何内容的一揽子异常处理程序。

尝试以某种方式报告信息的大多数catchall异常处理程序如下所示:

try
...
except
  on E: Exception do
    ...
end;

因此,如果你提出一些不会从Exception下来的东西,那么它就会经历这种风格而不会被抓住。

但是,它也可以像这样写:

try
...
except
  ...
end;

这种异常处理程序无法获得任何东西。

如果引发未在任何地方捕获的异常,程序将立即终止并显示错误。如果这是预期的效果,则可以通过使用非零错误代码调用Halt来执行相同的操作。

答案 1 :(得分:0)

有时,在dll中引发但未在该dll中捕获的异常也不会被调用应用程序的异常处理程序捕获。我想知道是否有可能在不使用dll的情况下模仿这种行为?