<% 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 %>