PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora

Google
 

Rozkaz On Error

Instrukcja służy do przekazania sterowania podczas powstania błędu do podprogramu obsługi błędu w procedurze. Może być także użyta do wyłączenia obsługi błędu.

Składnia instrukcji On Error:

On Error GoTo Linia
On Error Resume Next
On Error GoTo 0


Składnia instrukcji On Error może mieć następujące formy:
On Error GoTo Linia Włącza kod obsługi błędu, który zaczyna się od linii określonej przez argument Linia. Argument Linia może być etykietą linii albo numerem linii. Jeżeli wystąpi błąd w czasie wykonania programu, sterowanie zostaje przekazane do Linii i wykonywana jest obsługa błędu. Określona Linia musi znajdować się w tej samej procedurze co instrukcja On Error; w przeciwnym razie wystąpi błąd w trakcie kompilacji programu.
On Error Resume Next W chwili wystąpienia błędu, sterowanie zostaje przekazane do instrukcji, następnej po instrukcji, która spowodowała wystąpienie błędu i wykonanie programu jest kontynuowane. Należy używać tej formy zamiast On Error GoTo przy dostępie do obiektu.
On Error GoTo 0 Wyłącza wszystkie kody obsługi błędu w procedurze, w której jest użyta.


Jeżeli nie zostanie użyta instrukcja On Error, wówczas gdy wystąpi błąd w trakcie wykonania programu, to błąd jest fatalny tzn. zostanie wyświetlony tylko komunikat błędu i wykonanie programu zostanie przerwane.

Obsługa błędu jest włączona, kiedy jest w procedurze umieszczona instrukcja On Error, natomiast jest aktywna wtedy, gdy jest przez nią obsługiwany błąd. Jeżeli wystąpi błąd gdy obsługa błędu jest aktywna (błąd w czasie obsługi błędu) (pomiędzy wystąpieniem błędu i instrukcją Resume, Exit Sub, Exit Function, Exit Property), aktualna obsługa błędu procedury nie może obsłużyć błędu. Sterowanie powraca do procedury wywołującej. Jeżeli wywołująca procedura posiada włączoną obsługę błędu, to jest ona aktywowana do obsłużenia błędu. Jeżeli w wywołującej procedurze obsługa błędu jest także aktywna, sterowanie powraca do poprzednio wywołującej procedury aż do znalezienia włączonej, ale nieaktywnej obsługi błędu. Jeżeli nie zostanie znaleziona włączona ale nieaktywna obsługa błędu, wówczas błąd jest fatalny, praktycznie w momencie w którym wystąpi. Za każdym razem gdy obsługa błędu zwraca sterowanie to procedury która ją wywołała, to staje się ona bieżącą procedurą. Gdy błąd jest obsługiwany przez obsługę błędu w jakiejkolwiek procedurze, wykonanie programu jest kontynuowane w bieżącej procedurze w punkcie wyznaczonym przez instrukcję Resume.

Kod obsługi błędu nie jest procedurą Sub ani procedurą Function. Jest to część kodu wyznaczona przez etykietę linii lub numer linii.

W kodzie obsługi błędu przyczyna wystąpienia błędu sprawdzana jest poprzez wartość właściwości Number obiektu Err.
Kod obsługi błędu powinien sprawdzać lub zapisywać istotne wartości właściwości obiektu Err zanim może wystąpić jakiś kolejny błąd lub zanim zostanie wywołana procedura, która może spowodować błąd. Wartości właściwości obiektu Err odzwierciedlają tylko ostatnio wystąpienie błędu. Komunikat błędu odpowiedni do Err.Number znajduje się w Err.Description.

Instrukcja On Error Resume Next powoduje przekazanie sterowania do instrukcji, następnej po instrukcji, która spowodowała wystąpienie błędu, i kontynuowanie programu lub do instrukcji następnej po ostatnio wzywanej procedurze zawierającej instrukcję On Error Resume Next. Ta instrukcja pozwala przywrócic wykonywanie programu pomimo wystąpienia błędu w czasie wykonania programu. Można umieścić obsługę błędu tam gdzie błąd może wystąpić, zamiast przenoszenia kontroli w inną lokalizację w procedurze. Instrukcja On Error Resume Next staje się nieaktywana jeżeli inna procedura jest wywołana, więc należy umieszczać tą instrukcję w każdym bloku programu, w którym ma być wykonywana natychmiastowa obsługa błędu.

Instrukcja On Error GoTo 0 wyłącza obsługę błędu w bieżącej procedurze. Nie określa ona linii 0 jako początku kodu obsługi błędu, nawet jeżeli procedura zawiera linię o numerze 0. Bez instrukcji On Error GoTo 0, obsługa błędu jest wyłączana kiedy procedura jest opuszczana.

Aby zapobiec uruchamianiu kodu obsługi błędu, gdy nie wystąpi żaden błąd, należy bezpośrednio przed tym kodem umieszczać instrukcję Exit Sub, Exit Function, Exit Property, jak w przykładzie:

Sub MojaProcedura
   On Error Goto ObslugaBledow
   . . .
   Exit Sub
ObslugaBledow:
   . . .
   Resume Next
End Sub

Kod obsługi błędów zaczyna się tu za rozkazem Exit Sub a kończy przed End Sub, aby oddzielić go od reszty procedury. Blok obsługi błędów może się znajdować w dowolnym miejscu w procedurze.

Nieprzechwytywalne błędy w obiektach są zwracane do aplikacji kontrolującej podczas, gdy obiekt jest wykonywany z pliku wykonywalnego. W środowisku programistycznym nieprzechwytywalne błędy są tylko zwracane do aplikacji kontrolującej, jeżeli zostaną ustawione odpowiednie opcje. Należy przeczytać w dokumentacji aplikacji nadrzędnej (host), które opcje powinny być ustawione w czasie debuggowania i jak to zrobić.


na górę strony...


Google
 
Poprzednia | Wyżej | Strona główna | Spis Treści | Index haseł | Opis VB

BokDol
PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora