gpt4 book ai didi

delphi - 如何找出 Delphi 函数可能抛出哪些异常?

转载 作者:行者123 更新时间:2023-12-03 14:37:18 25 4
gpt4 key购买 nike

有没有一个好的方法来找出Delphi中过程/函数可以引发哪些异常(包括它称为过程/函数)?

在 Java 中,您始终必须声明可以引发哪些异常,但在 Delphi 中并非如此,这可能会导致未处理的异常。

是否有任何代码分析工具可以检测未处理的异常?

最佳答案

(编辑:现在很明显,该问题仅涉及设计时检查。)

新答案:

我无法说明是否有任何工具可以为您检查这一点。 Pascal 分析器就不是这样的。

但是,我可以告诉您,在大多数 Delphi 应用程序中,即使有工具可以为您检查这一点,您也不会得到任何结果。

为什么?因为 TApplication.Run() 中的主消息循环将所有 HandleMessage() 调用包装在异常处理 block 中,该 block 捕获所有异常类型。因此,在大多数应用程序中,大约 99.999% 的代码都将具有隐式/默认异常处理。在大多数应用程序中,此异常处理将是您自己的代码的 100% 左右 - 未包含在异常处理中的 0.001% 的代码将是自动生成的代码。

如果有一个工具可以为您检查这一点,您将需要重写Application.run(),使其不包含异常处理。

(之前的回答:可以指定 Application.OnException 事件处理程序来捕获其他异常处理程序未处理的所有异常。虽然这是运行时,因此可能不完全是您所追求的(听起来您想在设计时识别它们),但它确实允许您捕获任何其他地方未处理的异常。与 Jedi Code Library 中的 JCLDebug 等工具结合使用,您可以记录堆栈跟踪以找出异常发生的位置和原因,这将允许进一​​步调查并围绕有罪代码添加特定的异常处理或预防...)

关于delphi - 如何找出 Delphi 函数可能抛出哪些异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com