代码之家  ›  专栏  ›  技术社区  ›  Chris McAtackney

错误编号(vb6与c)

  •  5
  • Chris McAtackney  · 技术社区  · 14 年前

    我使用了Artinsoft的vb6到.NET向导将vb6应用程序转换为C,并且在以前使用err.number的任何地方都会收到升级警告;

    //升级_警告:(2081)错误编号 有新的行为。

    转换后的代码引用;

    Microsoft.VisualBasic.Information.Err().Number
    

    我不知道有什么区别。有人知道它可能是什么,或者忽略这个警告是安全的吗?

    更新

    对于将来偶然遇到这个问题的任何人——一句警告的话;在C.NET应用程序中继续使用err.number是不安全的。该属性仍然可用,但在出现错误后不会按预期填充。唯一一种情况是,如果错误来自COM组件,那么它将按预期进行填充。

    通常的错误(如db access、io operations等)不会给err().number提供任何值,因此不幸的是,必须对其使用进行重构。

    奇怪的是,在vb.net中,它仍然像预期的那样工作,所以在决定要转换的目标语言时,可能需要记住这一点。

    3 回复  |  直到 14 年前
        1
  •  3
  •   Esteban Villalobos    14 年前

    基本上,vb.net支持err.number属性,它的工作原理与vb6中的基本相同,但是在升级到c Microsoft.VisualBasic.Information.err()时,数字填充不正确,您不应依赖它。

    唯一确定设置错误号的场景是,当由COM互操作组件生成错误时,在这种情况下,您可以检查异常的InnerException成员中的错误号。

    您应该转换.NET异常的所有err.number用法,并修改逻辑以正确处理结构化错误。

    当做

        2
  •  1
  •   Corin    14 年前

    2000年10月起的VB6错误编号说明:

    Returns or sets a numeric value specifying an error. Number is the Err object's default property. Read/write.

    VB.NET错误的描述。来自的编号 MSDN :

    Returns or sets a numeric value specifying an error. Read/write.

    2000年10月的msdn中的注释在vb.net的联机版本中逐字复制,包括示例。这两者似乎没有什么不同。

        3
  •  0
  •   SamB som-snytt    14 年前

    也许所用的数字已经改变了?