Obsługa błędów wykonania

Kod VBA sprawnie działającej aplikacji Accessa powinien być zabezpieczony także przed błędami. Podstawą jest oczywiście kompilacja programu, ale to nie wszystko. Prawidłowy kod VBA powinien wyprzedzająco zabezpieczać również błędy wykonania, kiedy na  przykład dochodzi do dzielenia przez zero, odwołania do nieistniejącego obiektu czy przypisania błędnych wartości do zmiennych itp. Owszem, wiele błędów można wyeliminować sprawdzając np. wartości czy tworząc konstrukcje typu IF ….  THEN …. ELSE …. END IF, ale nie zawsze i nie wszystko da się  przewidzieć.

W kodzie VBA warto skorzystać z systemowej obsługi błędów. Jest tu wiele możliwości i wariantów, ale podstawowe i najczęściej  wykorzystywane to procedury:

    • On Error Resume Next
      (przy błędzie przejdź dalej)
      Trochę niebezpieczna instrukcja, gdyż ukrywa błąd i wszystkie jego następstwa. Jest stosowana, ale musi być używana z rozwagą.
    • On Error GoTo <Etykieta>
      (przy błędzie przejdź do etykiety)
      Gdy pojawi się błąd -następuje przejście do zaznaczonego etykietą miejsca kodu
    • On Error Goto 0
      resetowanie błędu czyli czyszczenie postępowania w przypadku błędu
  •  

Przykładowy kod może wyglądać tak:

Public Sub RozdzielTekst()
On Error Resume Next
(….) ciąg instukcji kodu (…)
On Error Goto 0
End Sub

Warto pamiętać, aby przed wyjściem z danej procedury, wykorzystać  resetowanie błędu czyli On Error Goto 0. Unikniemy w ten sposób sytuacji, że w kolejnej procedurze nagle nastąpi powrót do etykiety w zupełnie innej procedurze.
Przy bardzo rozbudowanym kodzie często stosuję także bardziej rozbudowaną obsługę błędów, szczególnie przy testach. No, ale to już temat na osobną notkę. 


Kurs Jak pisać czysty kod - dobre praktyki programowania

Jeden komentarz do “Obsługa błędów wykonania”

  1. Bardzo fajny wpis, widziałem ostatnio podobne artykuły i ten się wyróżnia na tle innych oraz jest wart uwagi. Konkretnie objaśniony temat. Bardzo przyjemnie się go czyta. Czekam na takich więcej 🙂

Leave a Reply