Copyright ©2009 Janusz Bonarowski 1
VB_3.2_Kalkulator_TryCatch
Wykonajmy aplikację pozwalająca dokonywać obliczeń na wartościach wprowadzonych w okna tekstowe, patrz propozycja formularza ma rys. 1. Zabezpieczyć aplikację przed błędnymi danymi. Komunikaty wyświetlać funkcją MsgBox.
Rys. 1. Propozycja formularza
Utworzone zostały dwa przyciski wykonujące dzielenie wartości z txtA i txtB, patrz Listing 1.
Listing 1
Private Sub btnDzielenie1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnDzielenie1.Click 'Procedura bez zabezpieczeń
Dim A, B, W As Single
A = Single.Parse(txtA.Text) B = CSng(txtB.Text)
W = A / B
lblW.Text = W.ToString End Sub
Procedura nie posiada zabezpieczeń i przy błędnych danych następuje jej przerwanie pokazujące, że programiście brak umiejętności.
Własna obsługa błędów
Aby zabezpieczyć aplikację przed tego rodzaju potknięciami należy stosować instrukcje
Try...Catch...End Try. Konstrukcja ta jest nastepująca, wiersze numerowane od 1 do 11 na Listingu 2:
Listing 2
Private Sub btnDzielenie2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnDzielenie2.Click Dim A, B, W As Single
1 Try
2 A = Single.Parse(txtA.Text) 3 B = CSng(txtB.Text)
4 W = A / B
5 lblW.Text = W.ToString 6 Catch ex As Exception
7 MsgBox(ex.ToString, , "Komunikat ex.ToString") 8 MsgBox(ex.Message, , "Komunikat ex.Message")
9 MsgBox("Proszę poprawić dane", MsgBoxStyle.Critical, _ 10 "Komunikat własny")
11 End Try End Sub
Copyright ©2009 Janusz Bonarowski 2 Wiersz 1 – Słowo kluczowe Try rozpoczynające konstrukcję.
Wiersz 2 - 5 - Wszystkie instrukcje znajdujące się pomiędzy słowami kluczowymi Try...Catch to kod „chroniony”. Jeśli podczas wykonywania dowolnej z tych instrukcji pojawi się błąd, program nie ulegnie awarii lecz.
Wiersze 6 - 11 - przejdzie do bloku instrukcji pomiędzy słowami kluczowymi Catch – End Try. W bloku tym, na ogół, umieszczamy komunikat o
błędzie, zwykle jeden komunikat. W prezentowanym zadaniu umieszczona tam zbyt wiele komunikatów, lecz dlatego, aby pokazać, że każdy z nich jest nieco inny i programista sam może zdecydować, który pozostawić.
Obiekt ex to Exception czyli wyjątek (tak eufemistycznie określono błąd).
Wiersz 7 - Obiekt ex zawiera bardzo wiele informacji, wyświetlamy te informacje metodą To String.
Wiersz 8,9 - Obiekt ex posiada właściwość Message, który wyświetla krótką, zwięzłą informację. Ponieważ zapis funkcji MsgBox w jednym wierszu jest zbyt szeroki aby go wyświetlić na ekranie – wiersz zostaje programowo złamany i wiersz nr 9 jest kontynuacją wiersza 8.
Wiersz 10 - Całkowicie własna obsługa błędu nie korzystająca z obiektu Exception.