Feil og avvik
Uttallige former for feil kan inntreffe. Mye tid går med til
å oppdage og håndtere feil. Program bør automatisk oppdage feil og
varsle eller loggføre disse, i stedet for å krasje.
Med On Error angir man hvor interpreteren skal gå ved feil, som i
Sub Test On Error Goto feilTakler ... Exit Sub feilTakler: ... Resume Next End Sub
Med Resume Next ber en interpreter gå til den linje umiddelbart etter den linjen der feilen inntraff. Alternativt, kan en bruke Resume <annetSted> for å angi et annet sted i programmet, som i
feilTakler:
...
Resume etterFeilTakling
etterFeilTakling:
...
Navnene "feilTakler" og "etterFeilTakling" er navngitte merkelapper som kan ha bokstaver og tall i seg.
En forenklet feilhandtering er å ikke ha noen spesiell feiltakler:
Sub Test On Error Resume Next ... End Sub
Vil en "vite" mer om den sist inntrufne feil tilbys variablene
- Err (feilkode som har inntruffet)
- Error$ (tekstlig beskrivelse)
- Erl (linjenummeret der feilen inntraff)
Med disse kan en f.eks. vise et vindu med disse:
MsgBox "FEIL!! " & Err & ": " & Error$ & " (linjenr: " & Erl & ")"
De blankes ved Resume.
Feilhandtering gjøres bare der koden anses som "risikabel", at man vet at muligheten er tilstede. Mange mener også at det er uheldig å "hoppe tilbake" (med Resume Next) etterpå. En greit strukturert feilhandtering er derfor:
Sub Example On Error Goto vedFeil ... (risikabel kode) On Error Goto 0 ' deaktiver ... (trygg kode) Exit Sub ' hopp ut her (ingen feil!) vedFeil: If Err = forventetFeil Then ... rydd opp slik vi kan Else ... advar om uforutsett End If On Error Goto 0 ' deaktiver End Sub
Content on this page is licensed under the Public Documentation License (PDL). |