Avatar billede ilflue Nybegynder
18. december 2005 - 01:23 Der er 14 kommentarer og
1 løsning

On error resume next

Hej.
I ASP er der functionen Resume next når en fejl opstår.
problemet ved denne function er at det forsat afvikler resten af koden efter fejlen. Er der ikke en anden måde at gøre det på, så den f.eks. Redirecter hvis der opstår en fejl.???

Jeg ved godt at man kan lave egne fejl sider og alt det der ... Det bruger jeg også, men jeg har en bestemt side der IKKE skal vise fejl når den opstår, men bare sende brugeren videre til en anden side UDEN at resten koden EFTER fejlen bliver afviklet
Avatar billede softspot Forsker
18. december 2005 - 01:27 #1
Du er vel nød til at kombinere On Error Resume Next med ren redirect hvis der er opstået en fejl, f.eks.:

On Error Resume Next

' Gør et eller andet der evt. kan fejle...
' ...HER

' Check derefter for en evt. fejlsituation
if err.number <> 0 then
  Response.Redirect "fejlside.asp"
end if

' Fortsæt med resten af siden hvis der ikke var fejl ovenfor...
Avatar billede ilflue Nybegynder
18. december 2005 - 01:34 #2
Ja det ved jeg. Gjorde jeg også i bunden af siden, men hvis man skal stoppe filen ved alle mulige fejl, så bliver det sku til rimelig mange if err.number til sidst
Avatar billede tjp Mester
18. december 2005 - 01:40 #3
Og måske for en god ordens skyld, lige nulstille fejlobjektet med 'Err.Clear' før der redirectes... ;-)
Avatar billede softspot Forsker
18. december 2005 - 01:41 #4
Det er korrekt. Fejlhåndtering er desværre lidt omstændigt i VBScript - havde sproget da bare adopteret VB's fejlhåndteringsmekanismer (ikke fordi de er perfekte), så ville det i det mindst være en anelse lettere at fejlhåndtere i sine scriptsider... men sådan skulle det altså ikke være :)
Avatar billede softspot Forsker
18. december 2005 - 01:43 #5
Jeg tvivler på at det har nogen betydning om du nulstiller fejlen inden du redirecter, da det er et nyt request du sætter igang og dermed også et nyt adresserum (med hvad deraf følger). Det er fint at være forsigtig, meeeen man kan også overdrive ;)
Avatar billede cpufan Juniormester
18. december 2005 - 14:10 #6
du kan vel bare:

On Error response.redirect "fejlside.asp"
Avatar billede ilflue Nybegynder
20. december 2005 - 17:08 #7
Kan man desværre ikke nej. Den godtager kun Resume next og Goto ...

Men hvis man lige bruger Softspots måde tons af gange sammen med Err.Clear, Err.Raise og en farlig masse kode, så kan man tilpasse en side til at gøre lige det man ønsker i alle tænkelige sitiuvationer
Avatar billede ilflue Nybegynder
20. december 2005 - 17:08 #8
Når, men mangler svar fra dig Soft :)
Avatar billede softspot Forsker
20. december 2005 - 17:33 #9
Her kommer svaret :)

P.S. Hvis dine sider er så lange at du behøver tonsvis af fejlhåndteringslinier, så bør du overveje at nedbryde siden i nogle mindre (typisk også mere overskuelige og genbrugelige) funktioner eller subs, hvor fejlhåndteringen måske virker lidt mere naturlig end ind imellem hver linie på en side. Jeg kan dog ikke lige give nogle konkrete forslag til hvordan du kan gøre dette, men det er under alle omstændigheder en god idé at gruppere sin kode i mindre logisk sammenhængende bidder...

Overvej evt. WSC (Windows Scripting Components), der er en scriptet udgave af ActiveX, der gør at man kan lave objekter der bruges på sammen måde som COM-objekter. Det giver en rigtig god mulighed for at genbruge kode på tværs af sider og sites for den sags skyld - men det var vist et sidespor ifht. fejlhåndtering... ;-)

Du kan starte her: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/20e4ffb7-f233-4aa1-b847-73e20fb6a1da.asp
Avatar billede ilflue Nybegynder
22. december 2005 - 11:51 #10
On Error bruges kun på en side. De andre sider bruger bare en hjemmelavet 500-100.
Og jeg har bygget det en del op i Functions. Men Windows Scripting lyder da ikke så dumt at benytte sig af...
Avatar billede ilflue Nybegynder
22. december 2005 - 12:04 #11
Bare lige for at høre, for det der har jeg ikke roddet med før.
Man opretter en Function som kan benyttes uden at være included i den fil den bruges i. Ligesom de indbyggede Response, Request, InStr, osv..????

Og så skal de bare oprettes i Global.???

På siden står der noget om at registrere .sct i Explorer.
Men det skulle vel virke med alle browsere uden registrering hver gang ikk..
Avatar billede cpufan Juniormester
22. december 2005 - 12:25 #12
hvad hvis du i toppen af siden benytter denne:

if err.number <> 0 then
  Response.Redirect "fejlside.asp"
end if

og så benytter on error goto 0

vil det så ikke udløse en redirect?
Avatar billede softspot Forsker
22. december 2005 - 13:35 #13
WSC (Window Scripting Components) er scripts der bliver kørt i et scripting-miljø, der ud fra en XML-formateret fil kan danne en COM-komponent lignende grænseflade.

Dette betyder at du bare kan lægge dine scripts i nogle eksterne wsc-filer og derefter oprette et objekt med Server.CreateObject, ligesom du f.eks. ville gøre med Scripting.FileSystemObject, ADODB.Connection, Perits.Upload, MSXML2.DOMDocument eller hvilket som helst andet COM-objekt du kan komme i nærheden af.

Det smarte ved denne metode er at du ikke i ASP skal bekymre dig om at sætte det op, objekterne er (igen som normale COM-objekter), hvis de er registrerede, bare til stede og lige til at starte, når du ønsker og hvor du ønsker. Jeg kan dog godt være lidt i tvivl om de kan bruges i Global.asa events Application_OnStart og Application_OnEnd, men under alle omstændigheder vil de være underlagt de samme regler som alle andre COM-objekter hvad muligheden for at oprette angår.

Der findes i øvrigt et fint (simpelt) lille program der kan generere disse wsc-filer for dig på grundlag af nogle oplysninger du specificerer, så du let kan arbejde videre med selve koden. Generator-programmet genererer alt det formelle som et COM-objekt skal overholde (interfaces og diverse GUIDs), samt skaller til de funktioner og egenskaber du måtte ønske at eksponere fra din komponent.

Selvom WSC understøtter en gammel teknologi, så er den stadig værdifuld for dem der arbejder intensivt med ASP 3.0 og COM i øvrigt, da den giver en let mulighed for at indpakke og genbruge kode på tværs af sider og endda sites, uden at skulle kopiere kode rundt flere steder (efter min mening en af de værste former for genbrug der findes).
Avatar billede softspot Forsker
22. december 2005 - 13:35 #14
Tak for point i øvrigt :)
Avatar billede ilflue Nybegynder
22. december 2005 - 21:36 #15
cpufan >> Desvære, Err.Number for færst en værdi når en fejl opstår, så den kan kun bruges EFTER koden der indeholder fejlen. Og Goto 0 er vist nok til at slå den originale fejl metode til igen, så On Error bliver ignoreret i koder efter Goto 0 ... (Bare ret mig hvis jeg tager fejl...)

Soft >> Ok det er jo smart nok. Det jeg mente med Global, var om de WSC man ville oprette skulle oprettes i Global, men det skal de jo ikke så ... De skal altså så bare oprettes i wsc filer ... Men det vil jeg så læse en masse om, for det lyder da ret arbejds sparende ... Takker for hjælp :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester