2016-06-07 6 views
0

während auf meinem Projekt (Konverter) arbeiten stieß ich auf ein Problem mit „try and catch“ Fehlerbehandlung:vb.net: Versuchen und Handhabung Fangfehler, Werte zurücksetzen

Alle Werte zurück gesetzt werden sollen, nach Zahlen Einfügen welche außerhalb des Bereichs liegen (0 - 1000).

Ich habe versucht, zu verwenden:

txtAcre.Text = "" 
txtSqaMeter.Text = "" 
txtHectare.Text = "" 

aber dann wird es nichts an.

Wie Sie vielleicht feststellen, ich bin ein absolut Anfänger, also halten Sie gerade Erklärungen einfach: D

Vielen Dank für Ihre Hilfe!

Hier ist der vollständige Code

Const Hectare_min = 0 
    Const Hectare_max = 1000 

    If rbHectare.Checked And IsNumeric(txtHectare.Text) Then 
     Try 
      dblHectare = CDbl(txtHectare.Text) 
      If dblHectare <= Hectare_min Or dblHectare >= Hectare_max Then 
       Throw New Exception 
      End If 
     Catch ex As Exception 
      MessageBox.Show("Please choose a value between 0 and 1000") 
     End Try 
    End If 
    txtAcre.Text = "" 
    txtSqaMeter.Text = "" 
    txtHectare.Text = "" 
+0

Sie sollten nicht eine Ausnahme werfen, wenn das Verhalten absolut außergewöhnliche ausgestellt ist. Verschieben Sie einfach die textbox text assignments in die 'If' Anweisung. –

+0

Ausnahmen sollen so verwendet werden ... statt dessen ein einfaches 'If' verwenden - heutzutage kann man es sogar mit [drei Parametern] verwenden (https://msdn.microsoft.com/en-us/library/bb513985 (v = vs.140) .aspx) – specializt

Antwort

0
If rbHectare.Checked And IsNumeric(txtHectare.Text) Then 
    Try 
     dblHectare = CDbl(txtHectare.Text) 
     If dblHectare <= Hectare_min Or dblHectare >= Hectare_max Then 

       txtAcre.Text = "0.0" 
        txtSqaMeter.Text = "0.0" 
       txtHectare.Text = "0.0" 
       Throw New Exception 
     End If 
    Catch ex As Exception 
     MessageBox.Show("Please choose a value between 0 and 1000") 
    End Try 
End If 

Sie könnten versuchen, das Textfeld Text auf 0,0 anstatt eine Null-Zeichenfolge zu ändern.

1

Verwenden Sie keine Ausnahmen für die Flusskontrolle. Sie können in Bezug auf die Leistung teuer sein. Da Sie Double verwenden, dann benutzen Sie einfach Double.TryParse:

Const Hectare_min = 0 
Const Hectare_max = 1000 

If rbHectare.Checked And IsNumeric(txtHectare.Text) Then 
    If Double.TryParse(txtHectare.Text, dblHectare) Then 
     If dblHectare <= Hectare_min Or dblHectare >= Hectare_max Then 
      MessageBox.Show("Please choose a value between 0 and 1000") 
      txtAcre.Text = "" 
      txtSqaMeter.Text = "" 
      txtHectare.Text = "" 
      Return 'Or whatever is appropriate for your application    
     End If 

     'If the code reaches here, then the user has entered a valid value   

    Else 
     MessageBox.Show("The value you entered is not a valid.") 
    End If 
End If 
Verwandte Themen