error handling

E

Eugene Anthony

One problem with the code bellow is after this code

conn.qDupUser p1,rs

I added:

set rs = nothing

to test the error handling capability.

What happen is the code bellow gets executed

If rs(0) = 1 then
response.write "<center><font class='error'>Error: Username is
unavailable</font></center><br><br>"
conn.close
set conn = nothing
else

along with the code bellow

If Err.number <> 0 then
Response.Write "<center><font class='error'>" & Err.number & ":" &
Err.Description & "</font></center><br>"
end if
on Error goto 0


THE CODE:


If request.queryString("Action") = 2 then
p1 = Trim(request.form("username"))
p2 = Trim(request.form("password"))
p3 = Trim(request.form("type"))
If (p1 <> "" and p2 <> "") AND (Len(p1)<=12 and Len(p2)<=12) then
on error resume next
set conn = Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("/db/upload/stelladb.mdb") & ";"
set rs = Server.CreateObject("ADODB.Recordset")
conn.qDupUser p1,rs
set rs = nothing
If rs(0) = 1 then
response.write "<center><font class='error'>Error: Username is
unavailable</font></center><br><br>"
conn.close
set conn = nothing
else
arParms = Array(p1,p2,p3)
sql = "INSERT INTO Account([Username],[Password],[Type]) VALUES(?,?,?)"
RunQueryString sql, arParms
End if
if Err.number <> 0 then
Response.Write "<center><font class='error'>" & Err.number & ":" &
Err.Description & "</font></center><br>"
end if
on Error goto 0
Else
response.write "<center><font class='error'>Error: Invalid username or
password</font></center><br><br>"
End if
End if


How do I solve the problem?

Eugene Anthony
 
M

Mike Brind

Eugene said:
One problem with the code bellow is after this code

conn.qDupUser p1,rs

I added:

set rs = nothing

to test the error handling capability.

What happen is the code bellow gets executed

If rs(0) = 1 then
response.write "<center><font class='error'>Error: Username is
unavailable</font></center><br><br>"
conn.close
set conn = nothing
else

along with the code bellow

If Err.number <> 0 then
Response.Write "<center><font class='error'>" & Err.number & ":" &
Err.Description & "</font></center><br>"
end if
on Error goto 0


THE CODE:


If request.queryString("Action") = 2 then
p1 = Trim(request.form("username"))
p2 = Trim(request.form("password"))
p3 = Trim(request.form("type"))
If (p1 <> "" and p2 <> "") AND (Len(p1)<=12 and Len(p2)<=12) then
on error resume next
set conn = Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("/db/upload/stelladb.mdb") & ";"
set rs = Server.CreateObject("ADODB.Recordset")
conn.qDupUser p1,rs
set rs = nothing
If rs(0) = 1 then

I'm not quite sure what your problem is, because you haven't exactly
described it very well, but in the 4 lines above, you have declared a
recordset object, opened it, set it to nothing and then tried to
reference it.

Obviously, since you have set rs = nothing, anything that belongs to rs
is also set to nothing, including rs(0).
 
S

solomon_13000

I purposely set rs = nothing

to test the error handling capability and what happen is the code
bellow gets executed

If rs(0) = 1 then
response.write "<center><font class='error'>Error: Username is
unavailable</font></center><br><br>"
conn.close
set conn = nothing
else

followed by the code bellow

If Err.number <> 0 then
Response.Write "<center><font class='error'>" & Err.number & ":" &
Err.Description & "</font></center><br>"
end if
on Error goto 0

so I am getting two error msg which is wrong. Only one error msg is to
be displayed.
 
M

Mike Brind

On Error Resume Next tells the VBScript engine to ignore errors and
continue with the next line of code. Details of the last error
encountered are stored in the Err object. Previous error information
is lost. On Error Goto 0 switches off On Error Resume Next, so code
continues executing normally until it reaches another error.

More information:
http://blogs.msdn.com/ericlippert/archive/2004/08/19/217244.aspx

--
Mike Brind

solomon_13000 said:
I purposely set rs = nothing

to test the error handling capability and what happen is the code
bellow gets executed

If rs(0) = 1 then
response.write "<center><font class='error'>Error: Username is
unavailable</font></center><br><br>"
conn.close
set conn = nothing
else

followed by the code bellow

If Err.number <> 0 then
Response.Write "<center><font class='error'>" & Err.number & ":" &
Err.Description & "</font></center><br>"
end if
on Error goto 0

so I am getting two error msg which is wrong. Only one error msg is to
be displayed.


Eugene said:
One problem with the code bellow is after this code

conn.qDupUser p1,rs

I added:

set rs = nothing

to test the error handling capability.

What happen is the code bellow gets executed

If rs(0) = 1 then
response.write "<center><font class='error'>Error: Username is
unavailable</font></center><br><br>"
conn.close
set conn = nothing
else

along with the code bellow

If Err.number <> 0 then
Response.Write "<center><font class='error'>" & Err.number & ":" &
Err.Description & "</font></center><br>"
end if
on Error goto 0


THE CODE:


If request.queryString("Action") = 2 then
p1 = Trim(request.form("username"))
p2 = Trim(request.form("password"))
p3 = Trim(request.form("type"))
If (p1 <> "" and p2 <> "") AND (Len(p1)<=12 and Len(p2)<=12) then
on error resume next
set conn = Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("/db/upload/stelladb.mdb") & ";"
set rs = Server.CreateObject("ADODB.Recordset")
conn.qDupUser p1,rs
set rs = nothing
If rs(0) = 1 then
response.write "<center><font class='error'>Error: Username is
unavailable</font></center><br><br>"
conn.close
set conn = nothing
else
arParms = Array(p1,p2,p3)
sql = "INSERT INTO Account([Username],[Password],[Type]) VALUES(?,?,?)"
RunQueryString sql, arParms
End if
if Err.number <> 0 then
Response.Write "<center><font class='error'>" & Err.number & ":" &
Err.Description & "</font></center><br>"
end if
on Error goto 0
Else
response.write "<center><font class='error'>Error: Invalid username or
password</font></center><br><br>"
End if
End if


How do I solve the problem?

Eugene Anthony
 
A

Anthony Jones

solomon_13000 said:
I purposely set rs = nothing

to test the error handling capability and what happen is the code
bellow gets executed

If rs(0) = 1 then

Earlier in your code you set On Error Resume Next.

This line fails but that doesn't imply the whole If ... End If block is
skipped. Code execution just falls into the 'Then' portion and executes
that. I can't say whether it's guaranteed always to behave that way but at
least in VBScript it fairly certain.
response.write "<center><font class='error'>Error: Username is
unavailable</font></center><br><br>"
conn.close
set conn = nothing
else

followed by the code bellow

If Err.number <> 0 then
Response.Write "<center><font class='error'>" & Err.number & ":" &
Err.Description & "</font></center><br>"
end if
on Error goto 0

so I am getting two error msg which is wrong. Only one error msg is to
be displayed.

Frankly Error handling in VBScript stinks. Using a blanket On Error Resume
Next can often to lead to all sorts of strange an seemingly inexplicable
behaviour.

If you really must use it extract the specific lines that really need this
(there are usually only one or two lines that actually need this) and move
them into their own function. You can place the On Error Resume Next in
those functions.
Eugene said:
One problem with the code bellow is after this code

conn.qDupUser p1,rs

I added:

set rs = nothing

to test the error handling capability.

What happen is the code bellow gets executed

If rs(0) = 1 then
response.write "<center><font class='error'>Error: Username is
unavailable</font></center><br><br>"
conn.close
set conn = nothing
else

along with the code bellow

If Err.number <> 0 then
Response.Write "<center><font class='error'>" & Err.number & ":" &
Err.Description & "</font></center><br>"
end if
on Error goto 0


THE CODE:


If request.queryString("Action") = 2 then
p1 = Trim(request.form("username"))
p2 = Trim(request.form("password"))
p3 = Trim(request.form("type"))
If (p1 <> "" and p2 <> "") AND (Len(p1)<=12 and Len(p2)<=12) then
on error resume next
set conn = Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("/db/upload/stelladb.mdb") & ";"
set rs = Server.CreateObject("ADODB.Recordset")
conn.qDupUser p1,rs
set rs = nothing
If rs(0) = 1 then
response.write "<center><font class='error'>Error: Username is
unavailable</font></center><br><br>"
conn.close
set conn = nothing
else
arParms = Array(p1,p2,p3)
sql = "INSERT INTO Account([Username],[Password],[Type]) VALUES(?,?,?)"
RunQueryString sql, arParms
End if
if Err.number <> 0 then
Response.Write "<center><font class='error'>" & Err.number & ":" &
Err.Description & "</font></center><br>"
end if
on Error goto 0
Else
response.write "<center><font class='error'>Error: Invalid username or
password</font></center><br><br>"
End if
End if


How do I solve the problem?

Eugene Anthony
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,521
Members
44,995
Latest member
PinupduzSap

Latest Threads

Top