2015-10-07 58 views
2

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

Try 
    (intClientVists > 0) 
    Exit Try 
Catch ex As Exception When 
    (intClientVists < 0) 
    Exit Try 
End Try 

只是希望有人能指导我在正确的方向,因为我真的不知道我在做什么了应用程序的这一方面。谢谢。

+1

为此目的'If/Else'会更好。 –

回答

2

是,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 
+0

这就是我所做的。但我被告知使用Try-Catch作为数据验证的工作。 – YoungMogul

+1

Try/Catch在这里的一个很好的使用可能是如果调用'Integer.Parse()'失败。当抛出异常时,只尝试/捕捉触发器,而不是基于您编写的布尔表达式。 –

+0

@JoelCoehoorn - 当然,你可以使用'Integer.TryParse()'并避免使用Try/Catch'块。但是这是一个很好的例子,可以使用Try/Catch。 – Tim

0

This MSDN article给出了您可以在Try-Catch中使用的.NET异常列表。这些是实际的错误,而不是输入验证检查,就像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 
+0

顺便说一下,该链接中的列表并不详尽。 – Andarta