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

1

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.

Copyright ©2009 Janusz Bonarowski

2