Toon posts:

[asp] error handling

Pagina: 1
Acties:

Verwijderd

Topicstarter
Op mijn site wil ik de errors die ontstaan in mijn ASP pagina netjes opvangen en de admin (is [me]) een mailtje sturen...

Nu kun je dit doen door te wereken met:

code:
1
2
3
4
5
on error resume next

if(err.number <> 0)

etc..


Maar nu krijg je niet echt veel info los, alleen een vage omschrijving en een foutcode... Niet echt geweldig voor te debuggen... Want er staat geen Line nummer bij en "on error resume next" captured niet de hele pagina...

Oplossing 2:

Maak een custum error bestand op iis 5 (pagina 500-100) en gebruik het 'asp error'
object, daarmee kun je prachtige foutmeldingen er uit krijgen..

Echter mijn ik kan om een verder onbelangrijke reden hier geen gebruik van maken...

Is er een mogelijkheid om het ASP Error Object toch te gebruiken zonder custom error page?! Heb wat test dingen gedaan maar geen best resultaat, of de runtime error bleef zichtbaar ipv redirect of het ASP Error Object gaf geen nekele melding over een fout.

De code die ik gebruikt hebt komt linea recta van www.w3schools.com

Bijv:

test.asp

code:
1
2
3
4
5
6
7
<%
On Error Resume Next
Response.Wite("test")
    If Err.number <> 0 Then
Response.Redirect("test2.asp")
        End if
%>


test2.asp

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%
dim objErr
set objErr=Server.GetLastError()

response.write("ASPCode=" & objErr.ASPCode)
response.write("<br />")
response.write("ASPDescription=" & objErr.ASPDescription)
response.write("<br />")
response.write("Category=" & objErr.Category)
response.write("<br />")
response.write("Column=" & objErr.Column)
response.write("<br />")
response.write("Description=" & objErr.Description)
response.write("<br />")
response.write("File=" & objErr.File)
response.write("<br />")
response.write("Line=" & objErr.Line)
response.write("<br />")
response.write("Number=" & objErr.Number)
response.write("<br />")
response.write("Source=" & objErr.Source)
%>


test2.asp zegt dat er geen enkele foutmelding was, waarschijnlijk komt dit doro de on error resume next op de vorige pagina, haal ik dit echter weg dan komt er een runtime error ipv dat ie redirect naar test2.asp

ziet er iemand enkele mogelijkheden, of is het per definitie onmogelijk?!

[ Voor 11% gewijzigd door Verwijderd op 07-02-2003 22:47 ]


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Het eror object op test.asp gebruiken? :o

Verwijderd

Topicstarter
Gert schreef op 07 February 2003 @ 22:53:
Het eror object op test.asp gebruiken? :o
Nee werkt ook niet...

"On Error Resume Next" zorgt ervoor dat Server.GetlastError geen error 'ziet'

Zonder die "On Error ......." krijg je gewoon een foutmelding

  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Dat klopt.
Wat ik altijd doe is in dezelfde pagina
code:
1
2
3
4
5
if err.number<> 0 then
    sendErrorMail(err)
    response.write "Er is een fout opgetreden.<br>"
    response.write "De administrator van deze site is hiervan op de hoogte gebracht"
end if

Zodat de functie sendErrorMail een mail verstuurd naar de administrator met daarin alle error gegevens.

| Life is a game (and games are fun) | homepage |


  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 22-03 10:40
Je kunt het AspError object helaas alleen gebruiken met een custom error page (maar daar was je dus zelf ook al achter gekomen) en het Err object staat idd weinig debug info in. Ik zou nog maar eens kijken of het toch niet mogelijk is een custom error page te gebruiken, want dat zou imho de gemakkelijkste oplossing zijn.

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Gebruik geen On Error Resume Next, maar probeer fouten te voorkomen of vang ze netjes af. Ik geef toe dat dit in ASP met VBScript erg moeilijk kan zijn. Dit is dan ook één van de grote verbeteringen die in ASP.NET zit.

Lees ook nog even wat info op http://www.devguru.com/Te...sp/quickref/asperror.html

Verwijderd

Topicstarter
Arnaud schreef op 08 February 2003 @ 09:58:
Gebruik geen On Error Resume Next, maar probeer fouten te voorkomen of vang ze netjes af. Ik geef toe dat dit in ASP met VBScript erg moeilijk kan zijn. Dit is dan ook één van de grote verbeteringen die in ASP.NET zit.

Lees ook nog even wat info op http://www.devguru.com/Te...sp/quickref/asperror.html
Ja nee natuurlijk probeer je script fouten te voorkomen, maar ik ben tot nu toe op iedere grote website runtime errors tegengekomen, welke veelal worden veroorzaakt door een database die voor problemen zorgt...

ik zal kijken of ik toch nog met custom error pages kan gaan werken....

  • Scharnout
  • Registratie: November 2000
  • Laatst online: 23-08 12:39

Scharnout

Meuk

Ingesteld op de servert en werkt prima!

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<%@ LANGUAGE=VBSCRIPT %>
<% OPTION EXPLICIT %>
<% response.expires = 0 %>

<html>
<head>
</head>
<body>
<%   
Dim l_objTgr
Dim l_strItem
Dim l_strError
Dim objAspError
Dim mailer

Function AddToError(p_strItem, p_strValue)
    If Len(p_strValue)>0 Then
        l_strError = l_strError & p_strItem & p_strValue & vbCrLf
    Else
        l_strError = l_strError & p_strItem & vbCrLf
    End If
End Function

   
   set objAspError = Server.GetLastError()

   if not objASpError is nothing then
      l_strError = l_strError & ""
      l_strError = l_strError & vbCrLf & "Error details:"
      l_strError = l_strError & vbCrLf & "  ASPError.ASPCode    " & objAspError.ASPCode & ""
      l_strError = l_strError & vbCrLf & "  ASPError.Number     "& objAspError.Number & ""
      l_strError = l_strError & vbCrLf & "  ASPError.Source     " & objAspError.Source & ""
      l_strError = l_strError & vbCrLf & "  ASPError.Category   " & objAspError.Category & ""
      l_strError = l_strError & vbCrLf & "  ASPError.File       " & objAspError.File & ""
      l_strError = l_strError & vbCrLf & "  ASPError.Line       " & objAspError.Line & ""
      l_strError = l_strError & vbCrLf & "  ASPError.Column     " & objAspError.Column & ""
      l_strError = l_strError & vbCrLf & "  ASPError.Description" & objAspError.Description & ""
      l_strError = l_strError & vbCrLf & "  ASPError.ASPDescription " & objAspError.ASPDescription & ""
      l_strError = l_strError & vbCrLf & "  Method  " & Request.ServerVariables("REQUEST_METHOD")
      l_strError = l_strError & vbCrLf


   End if


on error resume next
   AddToError "Session Contents",""
   For each l_strItem in Session.Contents   
    AddToError l_strItem, Session(l_strItem)
   next
on error goto 0

   AddToError "Application Contents","" 
   For each l_strItem in Application.Contents
    AddToError l_strItem, Application(l_strItem)
   next

   If Request.ServerVariables("REQUEST_METHOD")="POST" Then
    AddToError "Posted Values (Request.Form)",""
    For each l_strItem in Request.Form
        AddToError l_strItem, Request.Form(l_strItem)
    Next
   End If

   If Len(Request.QueryString) then
    AddToError "QueryString Values (Request.QueryString)",""
    For each l_strItem in Request.QueryString
        AddToError l_strItem, Request.QueryString(l_strItem)
    Next
   End If
   
   AddToError l_strItem, Request.ServerVariables("http_user_agent")
   AddToError l_strItem, Request.ServerVariables("remote_addr")


   Response.Write "<!-- error:" & vbCrLf & l_strError & " -->" & vbCrlF
   Response.Write "<center>Er is een fout opgetreden. De webmaster is er van op de hoogte gebracht.</center>"
Set Mailer          = CreateObject("CDONTS.NewMail")
Mailer.From         = "website"
Mailer.To           = "mezelf"
Mailer.Subject      = "foutmelding: " & now()
mailer.BodyFormat = 1 
Mailer.MailFormat = 1 
Mailer.Body  = l_strError
Mailer.Send

Set Mailer = Nothing

%>
</body>

And Bob's your uncle ...


Verwijderd

Topicstarter
Scharnout ik heb het effe geprobeerd, maar het lijkt erop dat de ASP pagina niet wordt gerenderd, of te wel, ik krijg de volledige source incl: <%@ LANGUAGE=VBSCRIPT %>
<% OPTION EXPLICIT %> opgestuurd naar IE en kan dat mooi dat view source bekijken...

Heb het inmiddels wel voor elkaar die error documenten, maar waarom worden ze niet uitgevoerd?!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 24-08 15:16

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 08 February 2003 @ 17:28:
Scharnout ik heb het effe geprobeerd, maar het lijkt erop dat de ASP pagina niet wordt gerenderd, of te wel, ik krijg de volledige source incl: <%@ LANGUAGE=VBSCRIPT %>
<% OPTION EXPLICIT %> opgestuurd naar IE en kan dat mooi dat view source bekijken...

Heb het inmiddels wel voor elkaar die error documenten, maar waarom worden ze niet uitgevoerd?!
Wat is de bestandsnaam van het errordocument? En je moet in IIS er niet naar verwijzen als file, maar als URL

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1