czwartek, 6 września 2018

VBA – Obsługa błędów


VBA – Obsługa błędów

W programowaniu występują trzy typy błędów: (a) Błędy składni, (b) Błędy czasu wykonania oraz (c) Błędy logiczne.
Błędy składniowe

Błędy składniowe, nazywane również jako błędy analizy, występują w czasie interpretacji pzez VBScript. Na przykład następujący wiersz powoduje błąd składni, ponieważ brakuje nawiasu zamykającego.
Function ObslugaBledu_Demo()
   dim x,y
   x = "Uazz kurs"
   y = Ucase(x
End Function

Błędy w czasie wykonywania

Błędy wykonania, zwane również wyjątkami, występują podczas wykonywania, po interpretacji.
Na przykład następujący wiersz powoduje błąd środowiska wykonawczego, ponieważ tutaj składnia jest poprawna, ale w czasie wykonywania próbuje wywołać fnmultiply, która jest nieistniejącą funkcją.
Function ObslugaBledu_Demo1()
   Dim x,y
   x = 10
   y = 20
   z = oblicz_pole(x,y)
   a = oblicz_pow(x,y)
End Function

Function oblicz_pole(x,y)
   oblicz_pole = x + y
End Function

Błędy logiczne
Błędy logiczne mogą być najtrudniejszym rodzajem błędów do śledzenia. Błędy te nie są wynikiem błędu składni lub środowiska wykonawczego. Zamiast tego pojawiają się, gdy popełnisz błąd w logice, która napędza twój skrypt i nie uzyskasz oczekiwanego rezultatu.
Błędy logiczne mogą być najtrudniejszym rodzajem błędów do śledzenia. Błędy te nie są wynikiem błędu składni lub środowiska wykonawczego. Zamiast tego pojawiają się, gdy popełnisz błąd w logice, która napędza twój skrypt i nie uzyskasz oczekiwanego rezultatu.
Nie możesz złapać tych błędów, ponieważ zależy to od wymagań biznesowych, jaki typ logiki chcesz umieścić w swoim programie.
Na przykład, dzieląc liczbę przez zero lub skrypt, który jest napisany, tak że wchodzi w nieskończoną pętlę.
Obiekt Err
Załóżmy, że jeśli wystąpił błąd środowiska wykonawczego, wykonanie zostanie zatrzymane, wyświetlając komunikat o błędzie. Jako programista, jeśli chcemy uchwycić błąd, używamy obiektu Error.
Przykład
W poniższym przykładzie Err.Number podaje numer błędu, a Err.Description podaje opis błędu.
Err.Raise 6   'Błąd przepełnienia.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear   'Wyczyść błąd.

Obsługa błędów

VBA włącza procedurę obsługi błędów i może być również użyty do wyłączenia procedury obsługi błędów. Bez instrukcji On Error, każdy występujący błąd podczas wykonywania jest fatalny: wyświetlany jest komunikat o błędzie, a wykonanie zatrzymuje się nagle.
On Error { GoTo [ line | 0 | -1 ] | Resume Next }
Lp.
Słowo kluczowe i opis
1
GoTo line
Włącza procedurę obsługi błędów, która rozpoczyna się od wiersza określonego w wymaganym argumencie linii. Określona linia musi być w tej samej procedurze co instrukcja On Error lub wystąpi błąd podczas kompilacji..
2
GoTo 0
Wyłącza włączoną procedurę obsługi błędów w bieżącej procedurze i resetuje ją do opcji Nothing (nic).
3
GoTo -1
Wyłącza włączony wyjątek w bieżącej procedurze i resetuje go do Nothing (nic).
4
Resume Next
Określa, że ​​gdy wystąpi błąd czasu wykonania, formant przechodzi do instrukcji bezpośrednio po instrukcji, w której wystąpił błąd, a wykonanie jest kontynuowane od tego punktu.

Przykład
Public Sub OnErrorDemo()

   On Error GoTo ErrorHandler   'Procedura obsługi błędów.
  
   Dim x, y, z As Integer
   x = 50
   y = 0
   z = x / y   'Dzielenie przez zero
 
ErrorHandler:       'Procedura obsługi błędów.
   Select Case Err.Number   'Pobranie numeru błędu
      Case 10   'Błąd dzielenia przez zero
         MsgBox ("Podjęto próbę dzielenia przez zero!")
      Case Else
         MsgBox "Nieznany błąd  - Błąd " & Err.Number & " : " & Err.Description
   End Select
   Resume Next
End Sub



Brak komentarzy:

Prześlij komentarz