|
捕捉并保存ASP运行错误的函数代码,需要获取asp代码运行错误的朋友可以参考下
过程名:catch(str) 使用方法: 复制代码 代码如下: on error resume next '你的代码,如数据库连接 call catch("显示给用户的提示信息") 功能:清除IIS的错误提示信息,自定义错误提示返回给用户,并将出错信息保存到txt文件(当然你也可以稍做修改转向自定义页面等)
代码: 复制代码 代码如下: <% option explicit '例一--------------------------- '必须和on error resume next一起使用,但在网页没有正式发布之前最好将其注释掉,以免在调试时看不到出错详细信息 on error resume next 'i没有定义,会出错,使用catch清除错误并保存到记事本 i call catch("页面无法访问") '------------------------------- '例二--------------------------- function conn() '必须和on error resume next一起使用 on error resume next '...........你的连接数据库代码 call catch("数据库打开错误") end function '------------------------------- sub catch(str) if err.number <> 0 then dim tmp,path '错误日志绝对路径,如"/error_log.txt" path = "/table/error_log.txt" tmp = tmp & "出错页面:" & geturl & vbcrlf tmp = tmp & "错误时间:" & now() & vbcrlf tmp = tmp & "来访IP:" & ip & vbcrlf tmp = tmp & "提示信息:" & str & vbcrlf tmp = tmp & "错误代号:" & err.number & vbcrlf tmp = tmp & "错误信息:" & err.description & vbcrlf tmp = tmp & "应用程序:" & err.source & vbcrlf & vbcrlf & vbcrlf tmp = tmp & file_read(path) call file_save(tmp,path,1) err.clear() die(str) end if end sub '以下为catch所用到的函数-------------------- sub echo(str) response.write(str) end sub sub die(str) echo(str) : response.end() end sub function ip() ip = request.servervariables("remote_addr") end function '获取当前URL function geturl() dim tmp if lcase(request.servervariables("https")) = "off" then tmp = "http://" else tmp = "https://" end if tmp = tmp & request.servervariables("server_name") if request.servervariables("server_port") <> 80 then tmp = tmp & ":" & request.servervariables("server_port") end if tmp = tmp & request.servervariables("url") if trim(request.querystring) <> "" then tmp = tmp & "?" & trim(request.queryString) end if geturl = tmp end function '函数:读取文件内容到字符串 function file_read(path) dim tmp : tmp = "false" if not file_exists(path) then file_read = tmp : exit function dim stream : set stream = server.CreateObject("ADODB.Stream") with stream .type = 2 '文本类型 .mode = 3 '读写模式 .charset = "gb2312" .open .loadfromfile(server.MapPath(path)) tmp = .readtext() end with stream.close : set stream = nothing file_read = tmp end function '函数:保存字符串到文件 function file_save(str,path,model) if model<>0 and model<>1 then model=1 if model=0 and file_exists(path) then file_save=true : exit function dim stream : set stream = server.CreateObject("ADODB.Stream") with stream .type = 2 '文本类型 .charset = "gb2312" .open .writetext str .savetofile(server.MapPath(path)),model+1 end with stream.close : set stream = nothing file_save = file_exists(path) end function '函数:检测文件/文件夹是否存在 function file_exists(path) dim tmp : tmp = false dim fso : set fso = server.CreateObject("Scripting.FilesyStemObject") if fso.fileexists(server.MapPath(path)) then tmp = true if fso.folderexists(server.MapPath(path)) then tmp = true set fso = nothing file_exists = tmp end function %>
|
|