避免在调试模式 Access 97 时因错误而停止

Posted

技术标签:

【中文标题】避免在调试模式 Access 97 时因错误而停止【英文标题】:Avoid stopping on error when in debug mode Access 97 【发布时间】:2018-11-01 13:40:05 【问题描述】:

当我在 Access 97 中进入调试模式时,程序将停止出现任何错误,即使该错误发生在 On Error Resume Next 之后。

我有一个函数可以测试元素 key 是否在 Collection Col 中使用

On Error Resume Next
var = Col.Item(key)  'Here the error is raised, and makes debug mode useless
...
InConnection = Not (Err.Number = 5)

这在生产中运行良好,但它使得在调试模式下运行程序毫无用处。

有没有办法避免程序在调试模式下因某些错误而停止?

据我所知,除了尝试使用上述方法捕获错误之外,没有其他方法可以测试 Access 97 中的集合中是否存在键。

【问题讨论】:

通常,我使用 For Each 循环遍历集合中的所有项目以测试项目是否存在(或使用字典代替)。但是,Access 97 远远早于我开始编程的时候。这对 Access 97 不可行吗? @ErikvonAsmuth For Each 循环是可能的,但这会创建不必要的嵌套循环并将时间复杂度提高到O^2。至于Dictionary,Access 97 中似乎不存在。 Dictionary 是一个 COM 对象(例如 Set dict = CreateObject("Scripting.Dictionary").)。虽然循环确实会增加时间复杂度,但我通常会考虑避免它过早优化,循环小集合通常不会超过几毫秒,并且避免它是混乱的,因为我们没有 try...catch 所以它需要你来重申你是如何处理错误的。 【参考方案1】:

在 VBA 编辑器 Tools | Options... 选项卡上的 General 中激活 Break on Unhandled ErrorsError Trapping 组中以使 OERN 部分静音。

要检查VBA.Collection 中的密钥是否存在而没有错误捕获,需要一个特制的类型库,就像this forum thread 中讨论的那样。

此外,这种类型库是练习使用 Break on All Errors 设置编写 VBA 代码艺术的先决条件——这本身就是一个小壮举 :-))

【讨论】:

感谢您的配置提示。不幸的是,我不知道使用 typelib :(

以上是关于避免在调试模式 Access 97 时因错误而停止的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 因错误而退出

来自调试器的消息:在 UITableView/UICollectionView 中使用 gif 图像 Kingfisher 库滚动时因内存问题而终止

将更改的图像保存到相机胶卷时因内存问题而终止

spring boot kafka 在将 testcontainers 与 kafka、zookeeper、模式注册表一起使用时因“代理可能不可用”而失败

从 access 97 数据库中获取表/模式

调试器不会因错误而停止