4

是否可以在 Delphi 中构建一段代码,使假设的 EChuckNorrisException 无法捕获?

对于我刚刚发现的 Java 编程语言,这在Uncatchable ChuckNorrisException中得到了“是”的回答

4

2 回答 2

9

不。在 Delphi 中,可以引发任何对象(TObject后代),尽管按照惯例,这通常仅限于从基Exception类继承的对象。并且可以创建一个可以捕获任何东西的通用异常处理程序。

大多数试图以某种方式报告信息的包罗万象的异常处理程序如下所示:

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

因此,如果您提出的东西不是从 下降的Exception,它将通过这种风格而不会被抓住。

但是,也可以这样写:

try
...
except
  ...
end;

这种异常处理程序不会得到任何东西。

如果您引发了一个没有在任何地方捕获的异常,程序将立即终止并出现错误。Halt如果这是预期的效果,则可以通过使用非零错误代码调用来做同样的事情。

于 2012-12-14T17:38:58.587 回答
0

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

于 2012-12-15T14:04:22.863 回答