【问题标题】:Stop running code in Functions停止在 Functions 中运行代码
【发布时间】:2016-07-02 21:00:46
【问题描述】:

我最近在 VB.NET 上编写了一个程序,例如显示 Input1 Mod Input2。这里我使用函数:

Private Function remainder(intno1 As Integer, intno2 As Integer) As Integer

    Dim intresult As Integer
    intresult = intno1 Mod intno2
    remainder = intresult

End Function

然后我在 Button_Click 事件中调用它:

    Dim intm As Integer, intn As Integer
    Dim intmod As Integer
    intm = Val(TextBox1.Text)
    intn = Val(TextBox2.Text)

    If TextBox1.Text >= TextBox2.Text Then
        MsgBox("Error while computing proccess ! Please try Again.", vbOKOnly + vbCritical, "Error!")
        **Stop statement**
    End If
    intmod = remainder(intm, intn)
    RichTextBox1.Text = "The result is " & Str(intmod) 

正如您在此代码中看到的,当 txt1 大于或等于 txt2 时,我使用 if 语句,然后显示消息框。在 End If 子句之前我想使用停止运行代码的语句。我的意思是停止在 Function 上执行这些过程。

我使用StopEnd 语句,但在我调试程序后,它停止响应甚至退出程序。

我应该在这里做什么?

【问题讨论】:

  • ReturnExit Sub
  • 现在要做的是单击其中一个答案旁边的复选标记,以便将其从未回答列表中移出。
  • Return 对我有用。问题是 Return 因为它对其他语句有效吗?我的意思是它只对函数有用,或者对一些什么有用?
  • 读取键入时弹出的 Intellisense:Returns execution control to the code that called a Function, Sub, Get, Set, or Operator procedure. 使用 Return <something> 从函数返回值

标签: vb.net


【解决方案1】:

尝试其中一种方法退出方法

Exit Sub

或者

Return

简单使用:

Dim intm As Integer, intn As Integer
Dim intmod As Integer
intm = Val(TextBox1.Text)
intn = Val(TextBox2.Text)

If TextBox1.Text >= TextBox2.Text Then
    MsgBox("Error while computing proccess ! Please try Again.", vbOKOnly + vbCritical, "Error!")
    Exit Sub
End If

intmod = remainder(intm, intn)
RichTextBox1.Text = "The result is " & Str(intmod) 

【讨论】:

    【解决方案2】:

    您可以使用Exit Sub 调用来停止执行该例程。如果它是一个函数,Exit Function

    顺便说一句,您应该使用CInt 而不是Val 来强制整数,并且您的消息应该更有帮助(即,计算时的错误是什么?)。 “第一个整数必须小于第二个整数”这样的东西对用户更有用。

    【讨论】:

      【解决方案3】:

      当你想退出函数而不返回任何值时,它表明软件失败,并且不能给负责任的调用者代码“一切照旧”的印象。

      为此你需要抛出一个异常:

      Throw New Exception("Error while computing proccess ! Please try Again.")
      

      在这种情况下,例外情况并不奇怪,当输入的文本框不符合预期时,很可能会无意中执行命令。 在这种情况下,没有理由抛出错误,而是阻止了执行函数已经在代码调用者中,而不是在函数体中。

      【讨论】:

        猜你喜欢
        • 2021-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-18
        • 2022-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多