|
| Trenger råd om error-behandling. Fra : Terje H. |
Dato : 29-05-01 03:45 |
|
Hei. Jeg prøver å lære meg litt om hvordan man best ordner med feil som
måtte oppstå i et ASP-script. Jeg ser at ASPError-objektet er det som gir
mest informasjon, men dette kan jeg ikke bruke fordi min ISP kjører IIS 4
mens ASPError visstnok først kom med IIS 5. Altså må jeg bruke Err-objektet.
Jeg har valgt å legge all error-behandling inn i en sub som igjen ligger i
en include-fil. Denne inkluderer jeg i samtlige filer. Subben starter med en
If Err.Number <> 0 og hvis true så sender subben en epost til webmaster og
deretter redirecter jeg klienten til en egen error-fil med litt info om hva
som kan ha skjedd, at epost allerede er sendt og presenterer linker for
videre navigering.
Er dette en grei framgangsmåte, eller kan det gjøres veldig mye smartere?
Det jeg igrunnen lurer mest på er hvordan denne subben bør kalles fra
asp-filene. Er det slik at subben bør kalles etter hvert eneste
databasekall? Er dette det viktigste? Skal jeg da kalle subben umiddelbart
etter f. eks. en INSERT eller etter at jeg setter Connection-objektet lik
Nothing? Bør jeg kalle subben f. eks. midt inne i en loop? Og hva med all
skjemavalidering? Også her kan det vel oppstå feil. Er det disse to områdene
jeg bør være oppmerksom på, databasekall og skjemavalidering, og så pepre
koden med mine sub-kall på disse stedene?
En annen ting jeg lurer på: Jeg ser noen steder at det finnes Err.egenskaper
som kun angår database eller Connection-objektet (a la: If
conn.errors.count> 0 then..), men jeg får ikke dette til å fungere. Hva er
egentlig dette? Noen som kan gi en link til mer info om dette?
Puh! Det var mange spørsmål!
På forhånd takk!
Terje H.
| |
Lauritz Jensen (29-05-2001)
| Kommentar Fra : Lauritz Jensen |
Dato : 29-05-01 13:42 |
|
"Terje H." wrote:
>
> Jeg har valgt å legge all error-behandling inn i en sub som igjen ligger i
> en include-fil. Denne inkluderer jeg i samtlige filer. Subben starter med en
> If Err.Number <> 0 og hvis true så sender subben en epost til webmaster og
> deretter redirecter jeg klienten til en egen error-fil med litt info om hva
> som kan ha skjedd, at epost allerede er sendt og presenterer linker for
> videre navigering.
>
> Er dette en grei framgangsmåte, eller kan det gjøres veldig mye smartere?
Desværre ikke.
> Det jeg igrunnen lurer mest på er hvordan denne subben bør kalles fra
> asp-filene. Er det slik at subben bør kalles etter hvert eneste
> databasekall? Er dette det viktigste? Skal jeg da kalle subben umiddelbart
> etter f. eks. en INSERT eller etter at jeg setter Connection-objektet lik
> Nothing? Bør jeg kalle subben f. eks. midt inne i en loop? Og hva med all
> skjemavalidering? Også her kan det vel oppstå feil. Er det disse to områdene
> jeg bør være oppmerksom på, databasekall og skjemavalidering, og så pepre
> koden med mine sub-kall på disse stedene?
>
> En annen ting jeg lurer på: Jeg ser noen steder at det finnes Err.egenskaper
> som kun angår database eller Connection-objektet (a la: If
> conn.errors.count> 0 then..), men jeg får ikke dette til å fungere. Hva er
> egentlig dette? Noen som kan gi en link til mer info om dette?
http://msdn.microsoft.com/library/psdk/dasdk/mdao9pwz.htm
| |
Lauritz Jensen (29-05-2001)
| Kommentar Fra : Lauritz Jensen |
Dato : 29-05-01 16:18 |
|
"Terje H." wrote:
>
> Det jeg igrunnen lurer mest på er hvordan denne subben bør kalles fra
> asp-filene. Er det slik at subben bør kalles etter hvert eneste
> databasekall? Er dette det viktigste? Skal jeg da kalle subben umiddelbart
> etter f. eks. en INSERT eller etter at jeg setter Connection-objektet lik
> Nothing? Bør jeg kalle subben f. eks. midt inne i en loop?
(hov ... jeg glemte/overså nogle spøgsmål)
Det kommer an på hvad du vil opnå[tm]. Det er vigtigst at fange fejl,
der hvor de kan opstå og der hvor man har tænkt sig at gøre noget ved
dem. Hvis du har du handlinger, a og b (eksempelvis en funktion, der
checker af password og en, der skriver hemmelighederne ud), og b ikke må
blive udfør, hvis a er fejlet, er det vigtigt at fange fejl imellem a og
b. Et andet eksempel er database opdateringer, for der skal det typiskt
være "alt eller intet". Men da gør jeg ofte det, at jeg starter en
trasaction, slå "resume next" til, laver alle mine opdateringer, og
commiter hvis der ikke er nogen fejl.
> Og hva med all skjemavalidering? Også her kan det vel oppstå feil.
Jo, men ikke runtime fejl, vel? Der undersøger du jo om felter er
udfyldt og om de indeholder gyldige data, og viser en fejl (det er jo så
fejl håndering uden et formaliseret undtagelses system).
> Er det disse to områdene jeg bør være oppmerksom på, databasekall
> og skjemavalidering, og så pepre koden med mine sub-kall på disse
> stedene?
Igen, fang fejl der hvor de kan opstå og der hvor du har tænkt dig at
gøre noget ved dem.
--
Lauritz
| |
Terje H. (29-05-2001)
| Kommentar Fra : Terje H. |
Dato : 29-05-01 19:16 |
|
Takk, jeg er litt klokere nå. Jeg gikk til Microsoft og leste til øyet ble
stort og vått om ADO-errors. Jeg forstår det slik at denne typen feil ikke
kan fanges opp med If Err.Number <> 0, men gjennom: If conn.errors.count> 0
then, er det korrekt? I såfall bør altså subben min sjekke for begge to,
ikke sant? Fungerer dette med IIS 4?
Vennlig hilsen
Terje H.
| |
Lars Raaum (29-05-2001)
| Kommentar Fra : Lars Raaum |
Dato : 29-05-01 21:13 |
|
Terje H. <nidaros2001@hotmail.com> skrev i
meldingsnyheter:9f0p22$1kqp4$1@ID-88092.news.dfncis.de...
> Takk, jeg er litt klokere nå. Jeg gikk til Microsoft og leste til øyet ble
> stort og vått om ADO-errors. Jeg forstår det slik at denne typen feil ikke
> kan fanges opp med If Err.Number <> 0,
Jo, denne fanger opp ADO feil i IIS 4.
mvh
Lars
| |
Terje H. (30-05-2001)
| Kommentar Fra : Terje H. |
Dato : 30-05-01 01:08 |
|
"Lars Raaum" <lars.raaum@portalen.no> skrev i melding
news:mnTQ6.2754$lM3.67819@news1.oke.nextra.no...
>
> Terje H. <nidaros2001@hotmail.com> skrev i
> meldingsnyheter:9f0p22$1kqp4$1@ID-88092.news.dfncis.de...
> > Takk, jeg er litt klokere nå. Jeg gikk til Microsoft og leste til øyet
ble
> > stort og vått om ADO-errors. Jeg forstår det slik at denne typen feil
ikke
> > kan fanges opp med If Err.Number <> 0,
>
> Jo, denne fanger opp ADO feil i IIS 4.
>
> mvh
> Lars
OK. Da blir det litt enklere.
Er det forresten noen som har en link til en bra artikkel eller lignende der
en fornuftig bruk av error-rutiner vises i praksis, eller kanskje en asp-fil
der der error-behandlingen er "eksemplarisk"? (Jeg vet jeg har sett en bra
artikkel hos Microsoft, men den omhandlet ASPError og den kan jeg ikke bruke
for øyeblikket.) Tror jeg kunne lære mye av å se hvordan andre gjør det. Av
alle de asp-filer jeg har sett på nettet, eller også fra Wrox-boka mi, så
kan jeg faktisk ikke huske å ha sett særlig mye til error-koding i det hele
tatt. Det betyr enten at jeg husker feil, eller at error-behandling er et
forsømt felt hos mange..
Terje H.
| |
Lars Raaum (30-05-2001)
| Kommentar Fra : Lars Raaum |
Dato : 30-05-01 10:20 |
|
Terje H. <nidaros2001@hotmail.com> skrev i
meldingsnyheter:9f1dmf$1lkqc$1@ID-88092.news.dfncis.de...
>
> "Lars Raaum" <lars.raaum@portalen.no> skrev i melding
> news:mnTQ6.2754$lM3.67819@news1.oke.nextra.no...
>
> > Jo, denne fanger opp ADO feil i IIS 4.
> >
> > mvh
> > Lars
>
> OK. Da blir det litt enklere.
> Er det forresten noen som har en link til en bra artikkel eller lignende
der
> en fornuftig bruk av error-rutiner vises i praksis, eller kanskje en
asp-fil
> der der error-behandlingen er "eksemplarisk"?
Jeg sliter også med dette... Du kan jo titte litt i
news:no.it.programmering.asp jeg har postet noe der.
Det jeg gjør er at jeg har en sub som fanger detaljer om feilene, denne
kalles etter hvert ADO-kall (conn.execute / open rs.Open / rs.Update osv.)
Og så har jeg en sub som behandler feilene. Dvs. jeg blir sendt en epost med
detaljene jeg har fanget opp, recordset og conn lukkes og settes = nothing,
response.Clear, response.Redirect til generell feilside (Det har skjedd en
feil. Webmaster har fått beskjed. Trykk her for å gå tilbake).
Jeg gjør altså omtrent det samme som deg, men får med alle feil, noe det
ikke virker som du gjør, og jeg får lukket alle åpne ADO-objekter (noe som
er ekstremt viktig), gjør du det?
Hvis du / andre er interessert kan jeg poste kildekoden.
mvh
Lars
| |
Terje H. (30-05-2001)
| Kommentar Fra : Terje H. |
Dato : 30-05-01 12:46 |
|
"Lars Raaum" <lars.raaum@portalen.no> skrev i melding
news:pc3R6.3253$vu4.331421@news3.oke.nextra.no...
> Hvis du / andre er interessert kan jeg poste kildekoden.
Gjør det, Lars. Jeg vil gjerne ta en kikk på det.
Terje H.
| |
|
|