LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

我的ASP页面报错了,想拦截SQL报错并输出错误原因但没拦住,仍然跳转了500报错页面,如何解决?

freeflydom
2026年3月5日 15:25 本文热度 244
:我的ASP页面报错了,想拦截SQL报错并输出错误原因但没拦住,仍然跳转了500报错页面,如何解决?


你在ASP页面中设置了on error resume next,但程序出错后仍然跳转到了IIS的500错误页,这通常是因为错误虽然被“忽略”了,但并没有被“处理”,最终还是触发了IIS层面的错误机制。

根本原因在于:on error resume next只是告诉脚本引擎遇到错误时继续执行下一行,它并不会自动清除错误。如果后续代码不主动检查并处理这个错误,当整个ASP页面执行完毕后,ASP运行时会发现这个错误依然存在,从而将它报告给IIS,最终触发了500错误页。

解决方案:在代码中正确处理错误

你的rs.open语句出错后,脚本会继续向下执行。如果在open语句之后,页面结束之前,没有代码去检查并处理这个错误,那么这个错误就会被保留到最后。因此,你需要在数据库操作完成后立即检查错误,并决定如何处理。

在Open操作后检查错误

rs.open这行代码之后,立即添加错误检查逻辑。如果发现错误(Err.Number <> 0),则手动输出错误信息,并使用Server.ClearErrorResponse.End终止页面的正常处理,防止错误传递下去。

示例代码:

asp
<%
On Error Resume Next ' 开启错误抑制
" 你的数据库连接和SQL语句
" set conn = ...
" sql = "SELECT ..."
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 1
' !!!关键部分:检查并处理错误 !!!
If Err.Number <> 0 Then
    ' 在这里输出你想要的错误描述
    Response.Write "系统暂时繁忙,请稍后重试。错误详情:" & Err.Description
    ' 清除错误,标记为已处理
    Server.ClearError()
    ' 停止执行后续代码,防止程序继续往下跑
    Response.End
End If
' 如果没错误,再继续后续操作
If Not rs.EOF Then
    ' ... 处理数据 ...
End If
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>

代码解释

  • On Error Resume Next:告诉ASP不要因为错误而停止,继续执行下一行

  • If Err.Number <> 0 Then:检查是否有错误发生。Err.Number不为0就表示有错误

  • Response.Write Err.Description:将你想要的错误描述输出到页面。

  • Server.ClearError()这是至关重要的一步。它告诉ASP运行时,这个错误已经被处理了,不要继续向上报告给IIS

  • Response.End:立即停止页面后续所有代码的执行,避免在已经出错的情况下,还去执行不完整的数据库操作逻辑。




该文章在 2026/3/5 15:26:51 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved