[ Pobierz całość w formacie PDF ]
.mdb tabeli błędów Accessa i Jet, zauważysz, że błędy o numerach między 58 a 76dotyczą błędów plików (np.File already exists, Disk full, Too many files i inne).Mógłbyś stworzyć ogólną procedurę dlatej grupy błędów i odwoływać się do niej z instrukcji Select Case w narzędziu do obsługi błędów:ErrorHandler:Select Case Err.NumberCase 58 to 76'Ogólna procedura dla obsługi błędów plikówCall FileTypeErrorsCase ElseMsgBox "Wystąpił nieoczekiwany błąd.Numer błędu: " & _Err.Number & "Opis błędu: " & Err.DescriptionResume ExitHereEnd SelectEnd Sub227Rozdział 13.f& Profesjonalna obsługa błędówInstrukcje ResumePoniższe instrukcje Resume umożliwią Ci przekazanie, w przypadku wystąpienia błędu, wykonywania programu doróżnych instrukcji.ResumeResume powoduje przekazanie wykonywania kodu do linii, w której wystąpił błąd.Gdy użytkownik zostaniepoinformowany o sposobie rozwiązania błędu, użycie instrukcji Resume spowoduje powrót do instrukcji, w której nastąpiłbłąd.Ma to zastosowanie w sytuacji, w której przyczyna powstania błędu została usunięta i chcesz powrócić do tego miej-sca w kodzie, w którym wystąpił błąd.Resume NextResume Next powoduje przekazanie wykonywania kodu do linii następującej po linii, w której wystąpił błąd.Umożliwiato wykonanie pozostałej części kodu.Poniższy diagram ilustruje przebieg programu dla różnych instrukcji Resume (rysunek 13.3).Rysunek 13.3.Obsługa błędu przyużyciu instrukcjiResumeUzyskiwanie dodatkowych informacji o błędzieNarzędzie do obsługi błędów powinno automatycznie zapisywać wszelkie informacje o błędzie, które mogą okazać sięprzydatne dla programisty.Im więcej tych informacji zbierze, tym łatwiej będzie programiście odnalezć i naprawić błąd.Obiekt Err dostarcza wielu informacji, lecz nie wszystkich.Dobrze zaprojektowane narzędzie do obsługi błędów powinnodostarczać następujących, dodatkowych informacji o błędzie:u Numer linii identyfikuje numer linii, w której wystąpił błąd.Zastanów się, czy nie warto umieścić w każdymmodule określonej liczby linii.Numery linii mogłyby być wstawiane po lewej stronie modułu, przed instrukcjamikodu.Dzięki opcji Find Accessa mógłbyś szybko przechodzić do linii, w której wystąpił błąd (przy założeniu, żenumery linii się nie powtarzają).Numery linii w procedurze nie muszą być umieszczone po kolei.Obiekt Err nie posiada opcji numerowania linii.Aby numerowaćlinie, użyj funkcji Erl.Przykład jej zastosowania znajdziesz wkodzie na dołączonej do książki płycie CD.u Nazwa formularza lub raportu przedstawia nazwę formularza lub raportu, w którym wystąpił błąd.Jest tokwestia przekazania nazwy formularza lub raportu do narzędzia zajmującego się obsługą błędów.u Nazwa procedury przedstawia nazwę procedury, w której wystąpił błąd.u Nazwa aktywnego formantu przedstawia nazwę formantu, który był aktywny w momencie wystąpienia błędu.u Wartość aktywnego formantu przedstawia wartość aktywnego formantu w momencie wystąpienia błędu.Zdarzasię, że błąd występuje tylko w przypadku wprowadzenia określonych wartości.Przykładowo, jeśli błąd występuje,gdy w polu tekstowym wprowadzana jest wartość większa niż 20,000, to błąd taki można z łatwościązidentyfikować, przekazując wartość z pola tekstowego do narzędzia zajmującego się obsługą błędów.Aktywny formant zostanie przekazany do narzędzia zajmującego sięobsługą błędów.Niektóre formanty posiadają wartości, inne nie.Narzędziedo obsługi błędów powinno przekazać ActiveControl (informację oaktywnym formancie) do procedury, która oceni jego wartość, używając do228Część IV f& Tajniki VBAtego celu wbudowanej funkcji TypeOf.Jeśli formant jest polemtekstowym, otrzymasz wartość pola tekstowego.Jeśli jednak jest toprzycisk poleceń, nie próbuj uzyskiwać jego wartości, bo spowoduje topowstanie błędu.u Identyfikator bieżącego rekordu przedstawia identyfikator (ID) rekordu, który był wyświetlany w formularzu wmomencie wystąpienia błędu.Czy zdarzyło ci się zauważyć, że jeden, konkretny rekord klienta powoduje więcejbłędów niż inne? Zapisując identyfikator bieżącego rekordu w narzędziu do obsługi błędów, będziesz mógłporównać ten rekord z innymi, które nie powodują powstawania błędów.Najczęstszym błędem jest brakwymaganych danych w którymś z pól.u Nazwa programu przedstawia nazwę aplikacji, w której wystąpił błąd.u Poziom błędu Możesz według własnego uznania przyznać błędom wartości (np.od 1 do 5).Dzięki tej informacjibędzie można mierzyć konieczność korzystania z pomocy osoby zajmującej się serwisowaniem aplikacji.u Nazwa użytkownika nazwa aktualnie zalogowanego użytkownika.Zauważyłeś kiedyś, że większość błędówzdarza się określonym użytkownikom? Określenie, którzy użytkownicy mają najwięcej problemów, może być bardzocenne.Wielokrotnie przekonasz się, że problemem nie są błędy w programie, lecz braki w wyszkoleniupracowników.Aby otrzymać nazwę użytkownika, możesz użyć ekranu logowania, a w przypadku systemówWindows 95/98/NT nazwa zalogowanego użytkownika może być uzyskana przez odwołanie do interfejsu APIsystemu Windows.Przykład użycia odwołania do interfejsu API systemu Windows w celu ot-rzymania nazwy zalogowanego użytkownika w narzędziach do obsługibłędów znajduje się na dołączonej do książki płycie CD (właściwośćUserName i funkcja GetUserName).u Data i czas Data i czas wystąpienia błędu.Informacja ta pomaga w analizowaniu częstotliwości występowaniabłędów.Prosty wykres powinien wystarczyć do wykazania, że z czasem błędy występują z mniejszączęstotliwością.u Notatki o błędzie Użytkownicy mogą wprowadzać informacje o tym, co robili w momencie wystąpienia błędu.Informacje te mogą być wprowadzane w polu tekstowym lub formularzu
[ Pobierz całość w formacie PDF ]