ASP 错误处理

<% Option Explicit

'-------------
'错误处理:
'-------------
'1.需在每一行可能发生错误的代码上使用"On Error" 和 "If Err.Number <> 0 Then ..." 结构。 注意作用域!
'2.On Error语句: 启用或禁用错误处理程序
'  * On Error GoTo 0:     禁用错误处理。
'  * On Error Resume Next:开启错误处理。 
'                          若未使用On Error Resume Next语句,所发生的运行时错误将显示错误信息,同时,代码的执行也随之终止。 
'                          但当你采用它时,就会使程序不顾运行时错误,跳过产生错误的语句继续执行。之后可以在过程内部建立错误处理例程。
'                          若调用其他过程时,On Error Resume Next语句变为非活动的,应在每个调用的例程中执行On Error Resume Next 语句。

sub Err1()
    dim i
    On Error Resume Next
    i=99/0
    If Err.number<>0 then
        response.Write ("出错了")
        response.End()     '如果不写的话,会继续执行下面程序。
    End if
    
    response.Write ("错误已跳过")
end sub

sub Err2()
    On Error Resume Next
    response.Write (var1)
    response.Write (111)

    On Error GoTo 0
    response.Write (var2)
    response.Write (222)
end sub

sub Err3()             '//用err.raise自定义错误信息
    On Error Resume Next

    Dim Conn
    Set Conn = Server.CreateObject("ADODB.Connection")

    '这个DSN实际上不存在,所以返回错误信息
    Conn.Open "foo"

   If Err.Number <> 0 then
     Err.Clear
     'Err.Raise可以凭空产生错误
     Err.Raise vbObjectError + 7, "ErrTest.asp", "Connection Open Method Failed"
     response.Write ("已使用Err.Raise"&"</br>")
   End If
   If err.Number <> 0 then    
     Response.Write("Error On line    -> " & Err.Number - vbObjectError)
     Response.write("<BR>Error Source -> " & Err.Source)
     Response.Write("<BR>Error Desc   -> " & Err.Description)
     Err.Clear
   End If
end sub

'call Err1()  
'//运行结果: 出错了

'call Err2()
'//运行结果:
'111
'Microsoft VBScript 运行时错误 错误 '800a01f4' 变量未定义: 'var2'

call Err3()
'//运行结果:
'已使用Err.Raise
'Error On line -> 7
'Error Source -> ErrTest.asp
'Error Desc -> Connection Open Method Failed

 %>

 

posted @ 2013-03-22 11:21  streetpasser  阅读(403)  评论(0编辑  收藏  举报