|
Home > Archive > IIS ASP > June 2006 > error handling
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
|
|
| Eugene Anthony 2006-06-22, 1:26 pm |
| 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
*** Sent via Developersdex http://www.codecomments.com ***
| |
| Mike Brind 2006-06-22, 7:23 pm |
|
Eugene Anthony wrote:
> 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).
--
Mike Brind
| |
| solomon_13000 2006-06-23, 1:29 am |
| 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 Anthony wrote:
> 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
>
> *** Sent via Developersdex http://www.codecomments.com ***
| |
| Mike Brind 2006-06-23, 7:30 am |
| 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/a.../19/217244.aspx
--
Mike Brind
solomon_13000 wrote:[vbcol=seagreen]
> 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 Anthony wrote:
| |
| Anthony Jones 2006-06-23, 7:30 am |
|
"solomon_13000" <solomon_13000@yahoo.com> wrote in message
news:1151027326.628285.81850@i40g2000cwc.googlegroups.com...
> 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 Anthony wrote:
>
|
|
|
|
|