【问题标题】:What is procErr: used for in Visual Basic?procErr:在 Visual Basic 中的用途是什么?
【发布时间】:2009-06-10 07:33:24
【问题描述】:

我目前正在维护一个遗留的 Visual Basic 项目,其中到处都有这些“procErr:”语句。我的猜测是,如果在执行函数时发生任何错误,它们被用作一种处理方式,这是正确的吗?

我已将项目转换为 VB.NET。不是使用这种 procErr 语法,而是将其包装在 Try Catch 中,而不是更好的方法吗?

【问题讨论】:

    标签: vb.net vb6 legacy vb6-migration


    【解决方案1】:

    我的 VB 有点生疏,但我相信 'ProcErr' 不是保留关键字。这只是 VB 中的一种命名约定,用于指示在您的方法(或“过程”,因此得名)中发生错误时应执行的块。

    在实际的代码中,你有像On Error GoTo ProcErr 这样的语句,然后你定义了procerr 块:

    procErr:
    msgbox "an error has happened"
    

    您可以将其替换为任何其他名称。 在 VB.NET 中,您确实可以用 try catch 例程替换它:

    Try
    // code
    Catch x As Type
    // exceoption handling
    Finally
    End Try 'cleanup code
    

    【讨论】:

    • Razzie:+1 很好的答案,但是如果我可以添加。 . . Try Catch 的异常处理将我们的错误处理代码引导到一个独特的模式中。请注意,“VB On Error goto”没有这样的模式。错误处理程序可以选择转到方法中的任何位置,并且通常没有什么可以阻止编码器添加在 VB3-6 中看起来非常合理的逻辑,但在 Vb.Net 中会引起呕吐。您需要根据具体情况处理每个 On Error Goto。将旧版 VB 转换为 VB.Net 并不是一个简单的提议。祝你好运道具:)
    • @Binary:你当然是对的。您不能只将任何 VB 错误例程转换为简单的 try-catch,因为它们在流程/结构上可能有很大不同。所以你需要逐个检查每一个,是的。话虽如此,我确实认为,如果可能的话,在转换为 VB.NET 时应该尽可能多地使用默认的 try-catch 例程。另一方面,在没有实际异常处理的情况下将每个 On Error Resume Next 转换为 try {} catch() {} 也不是很漂亮:-)
    猜你喜欢
    • 1970-01-01
    • 2010-11-05
    • 2010-11-25
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 2015-07-15
    相关资源
    最近更新 更多