11. januar 2004 - 03:32Der er
8 kommentarer og 1 løsning
Error handler til Chili!Upload så bruger ikke får ASP fejlmed.
Jeg har lavet en side hvor bruger kan skrive en gæstebog og vedlægge et billede. Det virker perfekt, men kun hvis bruger overholder reglerne, fx. max størrelse på fil. Hvis bruger ikke gør det vises der en ASP fejlmeddelelse som serveren selv genererer. Selv om der står hvad der er galt kan nogle bruger godt på i en tilstand der er en blanding af koma og panik. (De sidder helt stille mens deres arme flyver rundt... ja jeg ved det lyder mærkeligt) Er der en måde man kan "gribe" disse fejl og lave noget pænere til bruger, fx.
if [chili objekt].error = et eller andet alert("Du er jo idiot... læs reglerne igen!!!") end if
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Typsik gør man det ved at slå fejl kode fra med On Error Resume Next og så selv tjekke på err objectet om der er kommet en fejl.
Eks:
<% on error resume next
Set fbase = Server.CreateObject("Chili.Upload.1") fbase.SizeLimit = 100000 filnavn = fbase.SourceFileName t = inStrRev(filnavn,"\") if t > 0 then filnavn = Mid(filnavn,t+1) fbase.SaveToFile(Server.mapPath("./" & filnavn))
if err.number <> 0 then Response.Write err.Description & "<br>" end if %>
Jamen det er jo perfekt... Er der en måde så jeg får udskrevet fejlen uden at den går videre? Lige nu så laver "on error resume next" det at den får serveren til at fortsætte på fejl. Det er et problem da den derfor bare opretter posten i gæstebogen uden billede. Og hvis jeg ikke har den linie med så skriver serveren den normale fejlmeddelelse. Er der noget der hedder: on error resume [et eller andet sted i coden]? Jeg skal bare have den til at fortsætte i coden da jeg senere tager fejlen og udskriver den. Der efter skal jeg så have brugeren én side tilbage, men det kan vel bare gøres med JAVASCRIPT...
On error resume next gør den køre vidre i koden selvom der er en fejl. Så efter man har lavet noget man ved kan gå galt så kan man lave tjekkett. Som det lille eks vist. Lige efter linjen: fbase.SaveToFile(Server.mapPath("./" & filnavn))
Vil den komme med en fejl hvis filen er for stor.
Du kan stoppe kode med Response.End så det kan tilføjes i if sætningen:
if err.number <> 0 then Response.Write err.Description & "<br>" Response.End end if
OK...cool. Lige nu har jeg bare lagt resten af koden ind under ELSE delen af if err.number <> 0 then, men det andet er mere overskueligt... Har du styr på JAVASCRIPT? Jeg kan sku ikke lige huske coden til at smide bruger tilbage... SPG er om det kan lade sig gøre når det nu er på klientsiden det skal foregå?!?!?
if err.number <> 0 then Response.Write err.Description & "<br>" %> <a href="java script:history.back();" title="Link: Tilbage til forrige side">Tilbage </a> <% Response.End end if
Jamen jeg takker for alt din hjælp :) Pointene er dine...
Synes godt om
Ny brugerNybegynder
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.