ASPError(err)对象的相关基础知识(3)
作者:5do8 发布时间:2008-03-24 20:23:00
如果原ASP网页正在一个事务内运行,即在网页的最前面包含有一个<%@TRANSACTION=”…”%>指令,也应该确定是否需要在网页中采取一些方法,以退出该事务。例如可以调用内置ObjectContext对象的SetAbort方法:
objectContext.SetAbort
嗯,前端时间发过几千垃圾邮件,全是错误处理的
OptionExplicit
Response.AddHeader"StatusCode","200"
Response.AddHeader"Reason","OK"
OnErrorResumeNext
Response.Clear
DimobjError
SetobjError=Server.GetLastError()
dimobjErr,objMail,html
setobjErr=Server.GetLastError()
SetobjMail=CreateObject("CDONTS.NewMail")
objMail.From="s1z2d3s1@163.com"
objMail.to="5do8@5do8.com"
objMail.BodyFormat=0
objMail.MailFormat=0
objMail.Subject="QOPError500"
html="<fontface='Verdana,Arial,Helvetica,sans-serif'><br>"
html=html&"<p>Erroroccuredat:"&now
html=html&"<p>Referredfrom:"&request.ServerVariables("HTTP_REFERER")
html=html&"<p>Url:"&request.ServerVariables("URL")
html=html&"<p><b>Category:</b></p>"&objErr.Category
html=html&"<p><b>Filename:</b></p>"&objErr.File
html=html&"<p><b>ASPCode:</b></p>"&objErr.ASPCode
html=html&"<p><b>Number:</b></p>"&objErr.Number
html=html&"<p><b>Source:</b></p>"&objErr.Source
html=html&"<p><b>LineNumber:</b></p>"&objErr.Line
html=html&"<p><b>Column:</b></p>"&objErr.Column
html=html&"<p><b>Description:</b></p>"&objErr.Description
html=html&"<p><b>ASPDescription:</b></p>"&objErr.ASPDescription
html=html&"<blockquote>"
html=html&"AllHTTP:"&Request.ServerVariables("ALL_HTTP")
html=html&"</blockquote></font>"
objMail.Body=html
objMail.Send
objErr.clear
SetobjMail=Nothing
SetobjErr=Nothing
response.write(html)
这个操作起来确实很烦,看看老盖先生的在500-100.asp里面写了写什么东西:
<%
Response.WriteobjASPError.Category
IfobjASPError.ASPCode>""ThenResponse.Write","&objASPError.ASPCode
Response.Write"(0x"&Hex(objASPError.Number)&")"&"<br>"
Response.Write"<b>"&objASPError.Description&"</b><br>"
IfobjASPError.ASPDescription>""ThenResponse.WriteobjASPError.ASPDescription&"<br>"
blnErrorWritten=False
'OnlyshowtheSourceifitisavailableandtherequestisfromthesamemachineasIIS
IfobjASPError.Source>""Then
strServername=LCase(Request.ServerVariables("SERVER_NAME"))
strServerIP=Request.ServerVariables("LOCAL_ADDR")
strRemoteIP= Request.ServerVariables("REMOTE_ADDR")
If(strServername="localhost"OrstrServerIP=strRemoteIP)AndobjASPError.File<>"?"Then
Response.WriteobjASPError.File
IfobjASPError.Line>0ThenResponse.Write",line"&objASPError.Line
IfobjASPError.Column>0ThenResponse.Write",column"&objASPError.Column
Response.Write"<br>"
Response.Write"<fontstyle=""COLOR:000000;FONT:8pt/11ptcouriernew""><b>"
Response.WriteServer.HTMLEncode(objASPError.Source)&"<br>"
IfobjASPError.Column>0ThenResponse.WriteString((objASPError.Column-1),"-")&"^<br>"
Response.Write"</b></font>"
blnErrorWritten=True
EndIf
EndIf
IfNotblnErrorWrittenAndobjASPError.File<>"?"Then
Response.Write"<b>"&objASPError.File
IfobjASPError.Line>0ThenResponse.Write",line"&objASPError.Line
IfobjASPError.Column>0ThenResponse.Write",column"&objASPError.Column
Response.Write"</b><br>"
EndIf
%>
此处参考了:ASP3.0高级编程关于使用ASPError对象的属性,有以下几点值得注意的:
·即使没有出现错误,Number属性应该一直有一个值。如果ASP网页调用GetLastError方法时没有错误出现,该属性的值是0。通常情况下,对ASP脚本的运行期错误,Number属性返回十六进制的值“0x800A0000”,加上标准的脚本引擎错误代码。例如,前面的例子对“SubscriptoutofRange”错误的返回值为“0x800A0009”,因为VBScript对该类型错误的错误代码是“9”。
·当出现已经过一个错误时,Category和Description属性将一直有一个值。
·APSCode属性的值由IIS产生,对大多数脚本错误将为空。更多情况下,涉及外部组件使用出错时有相应的值。
·ASPDescription属性的值由ASP预处理程序产生,而不是由当前正在使用的脚本引擎产生的,并且对大多数脚本错误而言将是空的。更多情况下,对诸如对ASP内置对象调用无效的方法的错误有相应的值。
·File、Source、Line和column属性仅在错误出现时,并且在错误的详细数据是可用的情况下才能进行设置。对一个运行期错误,File和Line属性通常是有效的,但是column属性经常返回-1。当错误是一个阻止页面被ASP处理的语法错误,才返回Source属性。一般在这些情况下,Line和Column属性是有效的。如果把Source属性的值写到页面,明智的办法是先将该值传给HTMLEncode,以防在其含有非法的HTML字符。在本章的后面将详细地讨论HTMLEncode方法.


猜你喜欢
- pandas的qcut可以把一组数字按大小区间进行分区,比如data = pd.Series([0,8,1,5,3,7,2,6,10,4,9
- 多边形选区概述多边形选区是一种常见的对象选择方式,在一个子图中,单击鼠标左键即构建一个多边形的端点,最后一个端点与第一个端点重合即完成多边形
- 看下面的Java代码,目的是为了当i是3的时候,就不做输出,直接跳到下一个循环。int i = 0; 
- 时间格式化函数,代码简单但较实用代码很简单,谁都能看懂Function fmstr(str, str1, Lens) Dim str2For
- 我就废话不多说,咱直接看代码吧!tf.transposetranspose( a, perm=None,  
- 图例如下1.先在detail.html中做好页面上下文链接;然后在view.py中进行数据绑定:2.访问验证以上来源:https://www
- 概述Go 的并发模型与其他语言不同,虽说它简化了并发程序的开发难度,但如果不了解使用方法,常常会遇到 goroutine 泄露的问题。虽然
- 如果字典中存储了一些值,我想要取出来该怎么操作呢?1、我要取出字典中所有的键-值对取出字典中所有的键-值对时,可以使用items()返回一个
- 容器与可迭代对象在正式开始前先补充一些基本概念在 Python 中存在容器 与 可迭代对象容器:用来存储多个元素的数据结构,例如 列表,元组
- argparse介绍 argparse包用于解释命令行参数。这里给出几个常用的方法。# 创建解析器对象# @para: descripti
- 前提搭建钉钉应答机器人,需要先准备或拥有以下权限:钉钉企业的管理员或子管理员(如果不是企业管理员,可以自己创建一个企业,很方便的)有公网通信
- 1. 信号与槽(Signals and slots)信号与槽机制是 PyQt 的核心机制,用于对象之间的通信,也就是实现函数之间的自动调用。
- 建议有js基础,了解jquery,thinkphp,废话不说多下面就上代码《————HTML————》//thinkphp循环显示把data
- 本文实例为大家分享了wxPython绘图模块wxPyPlot实现数据可视化的具体代码,供大家参考,具体内容如下#-*- coding: ut
- 2020.3.7准备scrapy,使用anaconda创建一个新的环境,执行“conda create -n scrapyEnv pytho
- numpy中的ndarray转化成pytorch中的tensor : torch.from_numpy()pytorch中的tensor转化
- pycharm cv2的package安装失败在 PyCharm 中安装 cv2 包失败的原因可能有很多具体的解决方案如下确保您已经安装了
- 1前言我们本节来看看我们常说的索引下推。2什么是索引下推索引下推(Index Condition Pushdown,简称ICP),是MySQ
- 事务日志记录着在相关数据库上的操作,同时还存储数据库恢复(recovery)的相关信息。收缩日志的原因有很多种,有些是考虑空间不足,有些则是
- 本文通过一个案例来看看MySQL优化器如何选择索引和JOIN顺序。表结构和数据准备参考本文最后部分"测试环境"。这里主要