当前位置:K88软件开发文章中心编程语言AspAsp01 → 文章内容

asp运行过程中捕捉和保存asp错误的函数

减小字体 增大字体 作者:佚名     来源:asp编程网  发布时间:2018-12-30 8:34:32

在asp调试的时候,经常是根据出现的错误提示来找到错误的地方,然后作相应的修改,直到没有错误为止。这不仅是asp调试的方法,也是所有程序的调试方法。在asp的运行过程中,如何更明白的显示出现的错误在哪个页面,第几行,但又不能让客户端看到这个错误。所以想出来一个方法:使用on error resume next,将错误不显示到页面上,这样就不会给客户看到。但还要将错误写到一个自定义的日志文件中,以便我们开发人员方便找到错误所在的页面,或者对出现错误的情况下,转向一个自定义的页面上来,这样能给客户更好的体验。
过程名:catch(str)
功 
 
 
能:清除IIS的错误提示信息,自定义错误提示返回给用户,并将出错信息保存到txt文件(当然你也可以稍做修改转向自定义页面等)
使用方法:

<
%on error resume next '你的代码,如数据库连接 call catch("显示给用户的提示信息") %>
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)

 
catch 函数的具体代码如下:

<
% option explicit '例一--------------------------- '必须和on error resume next一起使用,但在网页没有正式发布之前最好将其注释掉,以免在调试时看不到出错详细信息 on error resume next 'i没有定义,会出错,使用catch清除错误并保存到记事本 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 %>
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)


asp运行过程中捕捉和保存asp错误的函数