是否有可能在Delphi中构造一段代码片段,使得假设的EChuckNorrisException无法捕获?
对于我刚刚发现的Java编程语言,Uncatchable ChuckNorrisException
中的是已经回答了这个问题。答案 0 :(得分:9)
没有。在Delphi中,可以引发任何对象(TObject
后代),但按照惯例,这通常仅限于从基类Exception
类下降的对象。并且可以创建一个覆盖任何内容的一揽子异常处理程序。
尝试以某种方式报告信息的大多数catchall异常处理程序如下所示:
try
...
except
on E: Exception do
...
end;
因此,如果你提出一些不会从Exception
下来的东西,那么它就会经历这种风格而不会被抓住。
但是,它也可以像这样写:
try
...
except
...
end;
这种异常处理程序无法获得任何东西。
如果引发未在任何地方捕获的异常,程序将立即终止并显示错误。如果这是预期的效果,则可以通过使用非零错误代码调用Halt
来执行相同的操作。
答案 1 :(得分:0)
有时,在dll中引发但未在该dll中捕获的异常也不会被调用应用程序的异常处理程序捕获。我想知道是否有可能在不使用dll的情况下模仿这种行为?