Microsoft Office Access |
|
|
Presretanje grešakaNivo:
U razvoju aplikacije neizbežno dolazite do tačke kada će se ispoljiti neka greška. Što je program veći, veća je verovatnoća da će do greške doći, a ona se može ispoljiti ne samo kada je ona "očekivana" već i kada je to najmanje poželjno. Iz tog razloga neizbežno je predvideti programske delove za presretanje grešaka i njihovo razrešavanje - one će ne samo pomoći da se greška zaobiđe, već će ukazati na programski deo gde se pojavljuje. VBA program nudi nekoliko ukaza i funkcija za izveštavanje i razrešavanje grešaka. Iskazom On Error određujemo dalje ponašanje programa kod pojave greške. Ovaj iskaz možemo proširiti odredbom GoTo koja govori programu na koji njegov deo se bezuslovno prelazi kada se greška pojavi, a on ima svoje "ime" koje se završava dvotačkom (:).
Iskaz On Error se uvek postavlja na početku, a programski deo za obradu greške (u ovom slučaju Greska:) uvek na kraju procedure ili funkcije, pre klauzule End Sub ili End Function. Ovim obezbeđujemo da se programski deo Greska: ne izvršava uvek; ako je procedura uspešno okončana, iz nje ćemo izaći komandom Exit. Očekivane greške koje nemaju uticaja na program i koje se mogu zanemariti možete jednostavno preskočiti iskazom On Error Resume Next (program nastavlja sa radom od sledeće naredbe).
Zanemarivanje pojave greške odredbom Resume Next važi do kraja procedure ili funkcije, a njen uticaj se može poništiti novim iskazom On Error GoTo 0. Na primer, pre programskog dela za brisanje privremene tabele koja ne postoji uvek, možete napisati deo programa koji proverava da li takva tabela postoji i u zavisnosti od rezultata ispitivanja granati program. Ali, možete i jednostavno napisati On Error Resume Next i zanemariti pojavu greške ukoliko tabele nema.
Iz tog razloga neophodno je da pre komande za brisanje tabele naredite Accessu da tabelu zatvori komandom Close. Nakon pokušaja brisanja takve tabele, isključićete zanemarivanje grešaka odredbom GoTo 0, kako biste mogli da tretirate druge potencijalne greške. Savet:
VBA nudi nekoliko funkcija za izveštavanje o greškama. Error() prikazuje tekstualni opis greške, a Err() broj koji je reprezentuje. Funkcija Err() je naročito korisna u grananju programa: u zavisnosti od broja greške koja se pojavila, naredbom bezuslovnog skoka ćete preći u deo programa za razrešavanje greške. Funkcija Err() prikazuje broj programskog reda u kome se greška pojavila, a način njene upotrebe možete ispitati u sledećem primeru:
Ovom funkcijom pokušavamo da otvorimo datoteke AUTOEXEC.BAT, odnosno CONFIG.SYS i ispitujemo broj programskog reda u kome se greška pojavila. U ovom primeru, funkcijama Err() i Error() dobijamo broj greške i njen opis, ali ne i programski red u kome se greška pojavljuje. Iako predvidite sve moguće scenarije pojavljivanja grešaka, a bazu date korisniku koji ima uključenu opciju Break On All Errors, program će se zaustaviti na svakoj grešci. Opcoja Break On All Errors se nalazi u Visual Basic Editoru, u meniju Tools / Options / General. Sledeće dve funkcije će vam pomoći da prvo zapamtite vrednost ove promenljive, zatim je izmenite i na kraju joj vratite vrednost na pređašnje stanje:
Prvu funkciju možete pokrenuti po otvaranju baze ili procedure, a drugu po zatvaranju. Pri testiranju aplikacije ponekad je potrebno namerno generisati grešku i proveriti ponašanje programa. Metoda Err.Raise BROJ generiše grešku, gde se BROJ može kretati u rasponu od 0-65535; pripazite, jer je prvih 512 brojeva rezervisano za sistemske greške. Npr. Error Raise 58 generiše grešku "File already exist" (datoteka već postoji). Pre pojave greške, ispravnost svake procedure ili funkcije možete testirati funkcijom IsError(). U sledećem primeru testiraćemo ispravnost funkcije Proba:
Kombinovanjem funkcija i komandi koje smo naveli, obezbedićete da program razvijen u Accessu bude otporan na sve vrste grešaka, što je naročito bitno kod profesionalnih i komercijalnih aplikacija.
|
|
Vrh stranice Prethodna stranica Naslovna strana Mapa sajta Pretraga |
| AFORIZAM ZA DANAS | OVIH DANA SLUŠAMO... |
| Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana. |