/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Fejlhåndtering: On Error Resume Next
Fra : Torben Brandt


Dato : 14-03-03 00:21

Jeg er ved at lave noget fejlhåndtering, og kigger derfor på On Error
Resume Next.
Jeg er bare lidt i tvivl om hvad den fortsætter med, hvis der skulle ske
hvis der skete en fejl.

Hvis jeg har følgende side:
On Error Resume Next
Response.Write "a"
fejl = 1 / 0
Response.Write "b"
Så skriver den "ab"

Hvis jeg har
Sub Skriv (s)
Response.Write s
fejl = 1 / 0
Response.Write s
End Sub
On Error Resume Next
Skriv "c"
Så skriver den kun "c"

Hvis vi kalder den kode, der ikke er inde i funktioner for niveau 0,
mens kode i funktioner har niveau efter hvor mange der er kaldt en
funktion (Fejlen i eksempel 1 skete i niveau 0, mens i eksempel 2 skete
den i niveau 1). Er dette så korrekt:
- Hvis der sker en fejl, og der står On Error Resume Next på det samme
niveau, så fortsættes der bare.
- Hvis der sker en fejl, og der ikke står On Error Resume Next på samme
niveau, så springes med det samme et niveau op indtil man kommer til et
niveau med On Error Resume Next.
- Hvis der ikke står On Error Resume Next på niveau 0, og en fejl kommer
hertil, så stopper eksekveringen og der skrives en fejl til brugeren.

Hvis nogle kender til try-catch-blokke i Java, er dette så det samme:
VBS/ASP:
On Error Resume Next
linie 1
linie 2

Java:
try{
linie 1
} catch (Exception e) {}
try{
linie 2
} catch (Exception e) {}
D.v.s. der kommer en try-catch omkring hvert kald på samme niveau som On
Error Resume Next.


Når der sker en fejl, så sættes Err.Number til et tal <> 0. Er det
rigtigt bare at opfatte Err som en log over den seneste fejl, og
Err.Clear derfor ikke vil have nogen effekt på hvad der vil blive
eksekveret?

mvh Torben


 
 
Jens Gyldenkærne Cla~ (14-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-03-03 11:39

Torben Brandt skrev:

> Jeg er ved at lave noget fejlhåndtering, og kigger derfor på
> On Error Resume Next.
> Jeg er bare lidt i tvivl om hvad den fortsætter med, hvis der
> skulle ske hvis der skete en fejl.

Resume Next betyder "fortsæt som om intet var hændt". Evt. fejl
ignoreres medmindre de er så alvorlige at siden ikke kan køre.

> Hvis jeg har følgende side:
> On Error Resume Next
> Response.Write "a"
> fejl = 1 / 0
> Response.Write "b"
> Så skriver den "ab"

Ja. Fejl-linjen eksekveres og giver en fejl, men Resume Next
betyder at scriptet bare kører videre.


> Er dette så korrekt: - Hvis der sker en fejl, og der står On
> Error Resume Next på det samme niveau, så fortsættes der bare.

Ja.

> - Hvis der sker en fejl, og der ikke står On Error Resume Next
> på samme niveau, så springes med det samme et niveau op indtil
> man kommer til et niveau med On Error Resume Next.

Ja.

> - Hvis der ikke står On Error Resume Next på niveau 0, og en
> fejl kommer hertil, så stopper eksekveringen og der skrives en
> fejl til brugeren.

Ja.


> Hvis nogle kender til try-catch-blokke i Java, er dette så det
> samme: VBS/ASP:
> On Error Resume Next
> linie 1
> linie 2
>
> Java:
> try{
> linie 1
> } catch (Exception e) {}
> try{
> linie 2
> } catch (Exception e) {}
> D.v.s. der kommer en try-catch omkring hvert kald på samme
> niveau som On Error Resume Next.

Det kan man måske godt sige. Jeg er ikke helt sikker på at
ækvivalensen holder hele vejen, men det ser rigtigt ud.


> Når der sker en fejl, så sættes Err.Number til et tal <> 0. Er
> det rigtigt bare at opfatte Err som en log over den seneste
> fejl, og Err.Clear derfor ikke vil have nogen effekt på hvad
> der vil blive eksekveret?

Tilsyneladende ikke.

Se evt. siden her vedr. fejlhåndtering:

<http://www.4guysfromrolla.com/webtech/060399-1.shtml>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408534
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste