请尝试捕获异常处理程序VB.NET

请尝试捕获异常处理程序VB.NET,vb.net,Vb.net,我正在使用VB.NET中的一个美发沙龙应用程序。用户基本上可以选择设计师、服务、年龄类别并输入访问次数。然后我有一个计算按钮来计算总价。我需要使用Try-Catch进行异常处理,但我对它不太熟悉。我假设它用于错误处理,在这种情况下,如何检查客户端访问是否大于0,以及检查输入的值是否为整数?以下是我对客户访问的尝试: Try (intClientVists > 0) Exit Try Catch ex As Exception When (intClientVists

我正在使用VB.NET中的一个美发沙龙应用程序。用户基本上可以选择设计师、服务、年龄类别并输入访问次数。然后我有一个计算按钮来计算总价。我需要使用Try-Catch进行异常处理,但我对它不太熟悉。我假设它用于错误处理,在这种情况下,如何检查客户端访问是否大于0,以及检查输入的值是否为整数?以下是我对客户访问的尝试:

Try
    (intClientVists > 0)
    Exit Try
Catch ex As Exception When
    (intClientVists < 0)
    Exit Try
End Try
试试看
(intClientVists>0)
退出尝试
捕获ex作为异常时
(intClientVists<0)
退出尝试
结束尝试

只是希望有人能引导我朝着正确的方向前进,因为我真的不确定我在为应用程序的这一特定方面做什么。谢谢。

是的,Try/Catch块用于错误处理。然而,他们并不是真的为这种错误。Try/Catch块更多的是针对程序员或计算机所犯的错误(无法分配内存、无法连接到数据库、无法打开文件、试图除以零、无法将值转换为指定类型),而不是针对用户所犯的错误(输入了错误的数字)

相反,您需要一个简单的If/Else块:

If intClientVists > 0 Then
    'Do something
Else
    'Do something else
End If
如果您真的想对此使用异常处理(同样:通常不是最佳选择),下面是它的外观:

Try
   If intClientVists < 0 Then Throw New InvalidOperationException()
   'Data is OK. Continue processing here

Catch Ex As InvalidOperationException When intClientVisits = 0
   'Show one error message

Catch Ex As InvalidOperationException When intClientVisits < 0
   'Show different error message

End Try
试试看
如果intClientVists<0,则抛出新的InvalidOperationException()
“数据还可以。继续在这里处理
当intClientVisits=0时,捕获Ex为InvalidOperationException
'显示一条错误消息
当intClientVisits<0时,捕获Ex作为InvalidOperationException
'显示不同的错误消息
结束尝试
提供了一个.NET异常列表,您可以在Try-Catch中使用这些异常。这些是与输入验证检查相反的实际错误,如Joel解释的

基本上,您在Try块中放入一些逻辑,如果您想在特定异常的情况下执行某些操作,那么您将捕获该异常类型并将您的逻辑放入该catch块中。然后,作为一个“包罗万象”的例子,只要简单地捕获“异常”就行了,不管异常是什么类型的

在您的特定情况下,如果用户将访问次数输入到可以输入字母的常规文本框中,则听起来最有可能使用Try-Catch。下面是一个您可以为此做些什么的示例:

Try
    If CInt(txtNumVisits.Text) > 0 Then
        'logic here
    End If  
Catch ex As Exception
    'If user entered something other than an integer in that box then an InvalidCastException will be caught
    'enter logic here for if that's the case.  For example:
    MessageBox.Show(Me, "Please enter a number >= 0", "Invalid Input")
    txtNumVisits.Focus()
End Try

我就是这么做的。但是我被告知在我的赋值中使用Try-Catch进行数据验证。如果调用
Integer.Parse()
失败,那么Try/Catch的一个好用法可能是。Try/Catch仅在抛出异常时触发,而不是基于您编写的布尔表达式。@JoelCoehoorn-当然,您可以使用
Integer.TryParse()
并避免使用
Try/Catch
块:),但这是一个很好的示例,说明在何处使用
Try/Catch
@Tim会更好,但这是一个很好的例子。@JoelCoehoorn-Yep,同意。出于这个目的,
If/Else
会更好。顺便说一句,链接中的列表并不详尽。