避免在调试模式 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 不可行吗? @ErikvonAsmuthFor Each
循环是可能的,但这会创建不必要的嵌套循环并将时间复杂度提高到O^2
。至于Dictionary
,Access 97 中似乎不存在。
Dictionary
是一个 COM 对象(例如 Set dict = CreateObject("Scripting.Dictionary")
.)。虽然循环确实会增加时间复杂度,但我通常会考虑避免它过早优化,循环小集合通常不会超过几毫秒,并且避免它是混乱的,因为我们没有 try...catch 所以它需要你来重申你是如何处理错误的。
【参考方案1】:
在 VBA 编辑器 Tools | Options...
选项卡上的 General
中激活 Break on Unhandled Errors
在 Error Trapping
组中以使 OERN 部分静音。
要检查VBA.Collection
中的密钥是否存在而没有错误捕获,需要一个特制的类型库,就像this forum thread 中讨论的那样。
此外,这种类型库是练习使用 Break on All Errors
设置编写 VBA 代码艺术的先决条件——这本身就是一个小壮举 :-))
【讨论】:
感谢您的配置提示。不幸的是,我不知道使用 typelib :(以上是关于避免在调试模式 Access 97 时因错误而停止的主要内容,如果未能解决你的问题,请参考以下文章
来自调试器的消息:在 UITableView/UICollectionView 中使用 gif 图像 Kingfisher 库滚动时因内存问题而终止
spring boot kafka 在将 testcontainers 与 kafka、zookeeper、模式注册表一起使用时因“代理可能不可用”而失败