2015-10-07 62 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