首页  ·  知识 ·  编程语言
捕捉并保存ASP运行错误
网友    ASP  编辑:dezai   图片来源:网络
捕捉并保存ASP运行错误
 过程名:catch(str) 

使用方法: 
复制代码代码如下:


on error resume next 

'你的代码,如数据库连接 

call catch("显示给用户的提示信息") 


功能:清除IIS的错误提示信息,自定义错误提示返回给用户,并将出错信息保存到txt文件(当然你也可以稍做修改转向自定义页面等) 



代码: 
复制代码代码如下:


<% 

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 

%> 
本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读