Chr*_*ney 5 .net vb6-migration
我已经使用Artinsoft的VB6到.NET向导将VB6应用程序转换为C#,并且我在以前使用过Err.Number的任何地方都收到了升级警告.
// UPGRADE_WARNING:(2081)Err.Number有一个新的行为.
转换后的代码是指;
Microsoft.VisualBasic.Information.Err().Number
Run Code Online (Sandbox Code Playgroud)
我没有运气,找出差异是什么.有谁知道它可能是什么,或者忽略这个警告是否安全?
UPDATE
对于任何在将来偶然发现这个问题的人 - 一句警告; 在C#.NET应用程序中继续使用Err.Number是不安全的.该属性仍然可用,但是在错误发生后没有按预期填充.如果错误来自COM组件,则唯一可以按预期填充它的情况.
正常错误,例如DB访问,IO操作等不会给Err().Number赋值,因此不幸的是它的使用必须重构.
奇怪的是,在VB .NET中,它仍然按预期工作,因此在决定转换的目标语言时,可能需要记住这一点.
小智 4
基本上 VB.NET 支持 Err.Number 属性,并且它的工作方式与 VB6 中几乎相同,但是当升级到 C# 时,Microsoft.VisualBasic.Information.Err().Number 未正确填充,您不应该依靠它。
唯一可以确定设置错误号的情况是错误由 COM 互操作组件生成时,在这种情况下,您可以检查异常的 InnerException 成员中的错误号。
您应该转换 .NET 异常的所有 Err.Number 用法,并修改逻辑以通过结构化错误处理正确运行。
问候
| 归档时间: |
|
| 查看次数: |
3647 次 |
| 最近记录: |