【问题标题】:Difference between Err.Raise and Error.Raise in VB6VB6 中 Err.Raise 和 Error.Raise 的区别
【发布时间】:2016-09-22 12:56:39
【问题描述】:

我支持一个旧的 VB6 应用程序,我想知道为什么代码同时使用 Err.Raise 和 Error.Raise。两者都出现在每次数据库调用后的验证中。

我们正在将此应用程序迁移到 C#,我正在尝试了解这些语句之间的细微差别,以便在 C# 中正确重现这两种行为。

我花了好几个小时搜索有关 Error.Raise 的信息,但没有找到任何有用的信息。

谢谢,

伊夫

【问题讨论】:

  • 没有内置的 Error.Raise 但您可以创建一个名为 Error 的 ErrObject,这很可能在您的代码中出现。右键单击错误并单击定义,看看它会把你带到哪里。
  • 当我单击定义时,它指的是 VB6 库。它在 VBA.Conversion 中定义,它是一个以错误号作为参数并返回给定错误号的错误消息的函数。也许 VB6 编译器只是用 Err.Raise 代替 Error.Raise ???
  • 如果您创建一个新的空 VB6 项目,将根本没有名为 Error 的对象。这可能是您的特定项目中引入的内容。我会找到它的一个例子,右键单击Error 并选择Definition 看看它会导致什么。
  • 使用 Error.Raise,而不定义名为 Error 的对象,将导致“需要对象”错误。也许用一些相关代码更新您的问题。不确定它是否会有所帮助,但它可能会。
  • @Marc 你是对的。在 On Error Goto 块中,如果出现错误,我们调用 Error.Raise。 VB6 分支到错误块以将出错的地方写入日志。在日志中,我们找到“需要对象”。它已经存在多年了。

标签: vb6 difference


【解决方案1】:

@Marc 是对的。 Error.Raise 是错误的。

在 On Error Goto 语句的范围内调用“Error.Raise 1234”将跳转到 Err.number = 424 且 Err.Description = “Object required”的错误块。

解决方案变得显而易见:在任何地方用 Err.Raise 替换 Error.Raise。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2015-09-17
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多