Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

27/09/2002 1 Języki programowania 1 Piotr Górczyński Obsługa błędów.

Podobne prezentacje


Prezentacja na temat: "27/09/2002 1 Języki programowania 1 Piotr Górczyński Obsługa błędów."— Zapis prezentacji:

1 27/09/2002 1 Języki programowania 1 Piotr Górczyński Obsługa błędów

2 27/09/2002 2 Plan Definicja błędu Obsługa błędów Instrukcja On Error Goto... Przykład On Error Goto dla transakcji Instrukcja On Error Goto 0 Instrukcja On Error Resume Next Resume i Resume Next

3 27/09/2002 3 Błąd Przez błąd (error) rozumiemy zdarzenie wygenerowane przez komputer wtedy, gdy nie może on wykonać zleconej mu operacji. Błędy występują z przyczyn niezależnych od programisty. Każdy błąd jest jednoznacznie identyfikowalny (np. przez numer). Do błędu może być dołączony opis (description). Błędy są generowane przez system operacyjny i aplikacje.

4 27/09/2002 4 Błąd cz. 2 Przykłady sytuacji generujących błąd: odczytanie dyskietki, gdy nie jest ona wsadzona do stacji dyskietek podłączenie się do komputera, który jest wyłączony dzielenie przez zero konwersja wartości do typu, do którego nie może być konwertowana (np. 18-20-2002 do typu data) Błąd powstający przy próbie odczytania nieistniejącego dysku (na przykład dyskietki, która nie jest wsadzona do stacji dysków) ma w systemie Windows 2000 numer 68 (Device Unavailable).

5 27/09/2002 5 Błąd w VB Błąd w VB jest zwracany w postaci obiektu o nazwie Err Obiekt Err ma właściwości (properties): Number – numer błędu Description – opis błędu

6 27/09/2002 6 Obsługa błędów Przez obsługę błędów (error handling) rozumiemy użycie w programie specjalnych instrukcji, które pozwalają programowi w przypadku zdarzenie błędu odpowiednio zareagować. Obsługę błędów należy stosować wszędzie tam, gdzie wykonanie instrukcji może się nie powieść z przyczyn niezależnych od nas. Typowym przykładem błędu które należy obsłużyć jest błąd powstający przy próbie odczytania nieistniejącego dysku (na przykład dyskietki, która nie jest wsadzona do stacji dysków). Reakcją programu powinno być na przykład wyświetlenie okna informującego o tym, że dany dysk jest niedostępny i przerwanie próby odczytania dysku.

7 27/09/2002 7 Instrukcja On Error Goto... Składnia: On Error Goto ObslugaBledu rozkazy [Exit Sub] ObslugaBledu: rozkazy Instrukcja ta powoduje włączenie obsługi błędów. Dla każdego następnego rozkazu w chwili wystąpienia zdarzenia błędu sterowanie zostanie przeniesione do miejsca w tej samej procedurze oznaczonego etykietą ObslugaBledu.

8 27/09/2002 8 Instrukcja On Error Goto... Procedurę obsługi błędów umieszcza się na końcu danej procedury. W przypadku gdy błąd nie wystąpi i nie trzeba uruchamiać procedury obsługi błędu, należy przed nią (etykietą ObslugaBledu) wyjść z procedury. Dlatego często przed procedurą obsługi błędów pojawia się instrukcja Exit Sub.

9 27/09/2002 9 Przykład On Error Goto... Kod programu Private Sub Drive1_Change() On Error GoTo ErrLabel Dir1.Path = Drive1.Drive Exit Sub ErrLabel: MsgBox Err.Number & ": " & Err.Description, vbCritical, "Błąd" End Sub Wykonanie programu bez błędu On Error GoTo ErrLabel Dir1.Path = Drive1.Drive Exit Sub Wykonanie programu z błędem On Error GoTo ErrLabel Dir1.Path = Drive1.Drive //tu wystąpił błąd MsgBox Err.Number & ": " & Err.Description, vbCritical, "Błąd"

10 27/09/2002 10 Przykład On Error Goto dla transakcji Transakcje są podstawowym składnikiem baz danych Cechy transakcji: atomowość – w ramach jednej transakcji wykonują się wszystkie operacje albo żadna spójność – transakcja nie narusza spójności danych izolacja – transakcja nie wie o działaniu innych transakcji trwałość – po zakończeniu transakcji jej skutki są trwałe Mechanizm obsługi błędów VB pozwala doskonale obsłużyć transakcje w bazie dnaych On Error Goto Obsluga Rozpoczynamy transakcje cn.StartTrans Wykonujemy operacje na bazie danych które maja być w jednej transakcji... Zatwierdzamy zmiany cn.CommitTrans Exit Sub Gdyby cos się nie powiodło, wycofujemy zmiany Obsluga: cn. RollbackTrans MsgBox Err.Number & ": " &_ Err.Description, vbCritical, "Błąd"

11 27/09/2002 11 Instrukcja On Error Goto 0 Składnia: On Error Goto ObslugaBledu rozkazy On Error Goto 0 rozkazy [Exit Sub] ObslugaBledu: rozkazy Instrukcja ta powoduje wyłączenie obsługi błędów. Dla każdego następnego rozkazu w chwili wystąpienia zdarzenia błędu pozostanie ono nie obsłużone.

12 27/09/2002 12 Instrukcja On Error Resume Next Składnia: On Error Resume Next rozkazy Instrukcja ta powoduje włączenie obsługi błędów. Dla każdego następnego rozkazu w chwili wystąpienia zdarzenia błędu pozostanie ono zignorowane i zostanie wykonany następny rozkaz.

13 27/09/2002 13 Instrukcja Resume [Next] Składnia: On Error Goto ObslugaBledu rozkazy [Exit Sub] ObslugaBledu: rozkazy Resume [Next] Instrukcja ta powoduje powrót do rozkazu (lub do następnego rozkazu, jeżeli zostanie użyta instrukcja Next) w którym wystąpił błąd.

14 27/09/2002 14 Obsługa błędów cz. 2 Kolejnym zastosowaniem procedury obsługi błędów jest zwalnianie zasobów. W językach Delphi, Visual C++,.NET do zwalniania zasobów służy instrukcja try i finally, która pozwala zdefiniować rozkazy, które muszą być wykonane niezależnie od tego czy wystąpił błąd, czy nie.

15 27/09/2002 15 Przykład 1 Sub Przycisk1_Klikniecie() 'Włączenie obsługi błędów On Error GoTo ObslugaBledow 'Deklaracja zmiennych Dim cn As Connection: Dim rs As Recordset: Dim i As Integer 'Stworzenie obiektów Set cn = New Connection: Set rs = New Recordset 'Otwarcie połączenie poprzez ODBC przez zrodlo danych o nazwie DSNMojaLiga2 cn.Open "DSNMojaLiga2" 'Wykonanie polecenie SQL "Wybierz wszystkei pola z wszytskich rekordow w tabeli Druzyna rs.Open "SELECT * FROM Druzyna", cn 'Przejdz na pierwszy reokrd rs.MoveFirst 'Wstaw zawartosc pola Druz kazdego rekordu do kolejnych komorek i = 1 Do While Not rs.EOF Cells(i, 1).Value = rs.Fields("Druz").Value: i = i + 1: rs.MoveNext Loop 'Zwalnianie zasobów Set rs = Nothing: Set cn = Nothing 'Wyjsce z procedury Exit Sub ObslugaBledow: 'Zwalnianie zasobów Set rs = Nothing: Set cn = Nothing 'Informacja o bledzie MsgBox Err.Number & ": " & Err.Description, vbCritical, "Błąd" End Sub

16 27/09/2002 16 Literatura www.vba.matrix.pl vb4all.canpol.pl


Pobierz ppt "27/09/2002 1 Języki programowania 1 Piotr Górczyński Obsługa błędów."

Podobne prezentacje


Reklamy Google