使用VB算术运算符时出现未处理的异常

时间:2014-01-08 14:22:41

标签: vb.net math

我有一个循环遍历服务器列表的函数,然后为每个服务器执行许多函数。

在每次迭代开始时,我需要计算当前进程的“步骤”(以便可以正确更新进度条),但这一行导致错误 -

Me.CurrentStepLoop = ((Me.CurrentServerLoop - 1) * Me.ServerSteps) + 1

所有三个引用属性都是整数,且值非常低(即CurrentServerLoop最多为6,而ServerSteps最多为20,因此CurrentStepLoop可以是从这个等式中不再是101。

这是我得到的错误 -

  

mscorlib.dll中出现未处理的“System.Reflection.TargetInvocationException”类型异常   附加信息:调用目标抛出了异常。

我觉得特别奇怪的是我在Try...Catch内有相关的行,但错误不是由我的代码处理的,而是我看到通用的Visual Exchange错误。该行实际上没有突出显示,但我知道就好像我发表评论一样,错误不会发生

有人能说清楚为什么会这样吗?感谢。

以下是我认为导致此问题的snippit,以及link to the full code -

For Each CurrentServer In Me.Servers

    If bw.CancellationPending = True Then
        e.Cancel = True
        Exit For
    Else

        Try
            Me.CurrentStepLoop = ((Me.CurrentServerLoop - 1) * Me.ServerSteps) + 1
        Catch Ex As Exception
            Dim ErrorForm As New formError(Ex)
            e.Cancel = True
            Exit For
        End Try

        MappingResult = Me.DoMapDrives(CurrentServer)
        If Not MappingResult Then bw.CancelAsync() : Exit For

        {...Other actions here...}

        CurrentServerLoop += 1

    End If

Next

1 个答案:

答案 0 :(得分:0)

我发现错误及其发生的原因。

SetSteps()方法中,我计算Me.StepSize,但我的确错了。改变这个 -

Me.StepSize = Me.proProgress.Maximum / Me.ServerSteps

为此解决了问题 -

Me.StepSize = Me.proProgress.Maximum / Me.TotalSteps

问题是正在设置进度条超过它的最大值,这导致了错误。感谢。