VB.net逻辑捕获函数中的错误

时间:2015-05-21 08:48:32

标签: vb.net function error-handling

我不是专业人士,我自己学习一些编码规则。 我从vba开始,现在我接近vb.net,但我的知识很差。

我编写了这个函数来从记录集中提取一个列(在DB上查询)并将其放入一个字符串的Hashset中。

尝试处理错误列数的错误,我使用了以下标准:

1)声明" mErr"在调用函数的代码中为boolean;

2)发送" mErr" byRef到函数;

3)发生错误时:将mErr更改为true并将mHash插入空字符串。

Public Function RSCol(ByVal mRS As Object, ByVal mCol As Byte, ByRef mErr As Boolean)
    Dim i As Long
    Dim mHash As New HashSet(Of String)
    If mRS.GetUpperBound(0) < mCol Then
        mErr = True
        mHash.Add("")
        Return mHash
        Exit Function
    End If
    For i = 0 To mRS.GetUpperBound(1)
        mHash.Add(mRS(mCol, i))
    Next
    Return mHash
End Function

它似乎有效但我认为不是一个好的编码,我想提高我的编码技能。

每个建议都表示赞赏。

4 个答案:

答案 0 :(得分:1)

在您的代码中:

  自从上面的Exit Function语句以来,

Return无法访问   Exit Function函数会将控件转移到   功能

     

更多的函数应该返回一个值,否则你会得到一个   警告。在这种情况下,您可以使用Sub

你的代码可以是

 Public Function RSCol(ByVal mRS As Object, ByVal mCol As Byte, ByRef mErr As Boolean) As HashSet(Of String)
        Dim loopCounter As Long
        Dim mHash As New HashSet(Of String)
        Try
            If mRS.GetUpperBound(0) < mCol Then
                Throw New Exception("")
            End If
            For loopCounter = 0 To mRS.GetUpperBound(1)
                mHash.Add(mRS(mCol, loopCounter))
            Next
        Catch ex As Exception
            mHash.Add(ex.ToString())
        End Try
        Return mHash
    End Function

您可以详细参考Try..Catch机制Click Here 有关Exceptions

的更多信息

由于我注意到您的命名惯例太差,我建议您仔细阅读article by Microsoft

答案 1 :(得分:0)

你应该抛出并处理异常。看看this

答案 2 :(得分:0)

您可以使用例外来控制功能上的错误。当你在函数中发现某些内容出错时,你会抛出它:

if ( something ) then 'check if something bad happened
  Throw New Exception("X has occurred")
end if

然后,当这个抛出此异常的函数时,你应该像:

try
    ' Code with the call to the function which throws the exception
catch excp as Exception
    'Your control code for this situation, as example just show it
    MessageBox.show(excp.Message)
end

答案 3 :(得分:0)

在回答你的问题之前,让我说清楚两件​​事:

  1. 错误
  2. 异常
  3.   

    异常是那些可以在运行时处理的异常   错误无法处理。

    有效处理异常/错误始终是一种好习惯。

    Try-Catch-Throw 用于救援。

    基本语法:

    Try
        ' Do something in here that
        ' might raise an error.
      Catch
        ' Handle exceptions that occur within
        ' the Try block, here.
      Finally
        ' Perform cleanup code in here.
      End Try
    

    尝试:Try块标识将激活特定异常的代码块。接下来是一个或多个Catch块。

    Catch :程序在您要处理问题的程序中的位置捕获异常处理程序。 Catch关键字表示捕获异常。

    最后:Finally块用于执行一组给定的语句,无论是抛出还是不抛出异常。例如,如果打开文件,则必须关闭它是否引发异常。

    抛出:程序在出现问题时抛出异常。这是使用Throw关键字完成的。

    如果您没有在程序中获得任何异常,建议使用try catch块