Asp classic 在经典ASP中运行ADO事务时使用什么错误模式?

Asp classic 在经典ASP中运行ADO事务时使用什么错误模式?,asp-classic,transactions,vbscript,ado,Asp Classic,Transactions,Vbscript,Ado,我在一个经典的ASP页面中使用ADO和VBScript运行一个数据库事务,该页面涉及多个调用来执行连接对象的方法(即conn.Execute)。 我发现我需要在页面顶部设置“On Error Resume Next”(错误恢复下一步),以便在任何事务调用(即conn.Execute)失败时,我可以使用回滚代码跟踪它。 我可以运行ADO事务吗?即使在我的经典ASP页面中,错误模式为“出错时转到0”而不是“出错时继续下一步”时也是如此?回滚事务的示例代码如下所示 'Rollback transact

我在一个经典的ASP页面中使用ADO和VBScript运行一个数据库事务,该页面涉及多个调用来执行连接对象的方法(即conn.Execute)。 我发现我需要在页面顶部设置“On Error Resume Next”(错误恢复下一步),以便在任何事务调用(即conn.Execute)失败时,我可以使用回滚代码跟踪它。 我可以运行ADO事务吗?即使在我的经典ASP页面中,错误模式为“出错时转到0”而不是“出错时继续下一步”时也是如此?回滚事务的示例代码如下所示

'Rollback transaction if a previous conn.Execute fails
if err.Number <> 0 then
    if tranCount = 1 then
       conn.RollbackTran
       tranCount = 0
    end if
end if
“如果上一次连接执行失败,则回滚事务”
如果错误号为0,则
如果tranCount=1,则
控制回滚传输
tranCount=0
如果结束
如果结束
有趣的问题! 我通常不从经典ASP执行数据库事务,因此我不确定conn.Errors是否会在ASP脚本之前捕获错误。但你至少可以试试

IF conn.Errors.Count > 0 THEN
    response.write "whoops"
END IF
否则,它可能会帮助您了解“出错时恢复下一步”仅在当前范围内有效。(见下面的代码)


<%
    response.write "start"
    BadFunction()
    response.write "middle"  '//<--- This will be printed

    dim b : b = 8 / 0  '//Division by zero

    response.write "end"    '//<-- This will NOT be printed!




    Function BadFunction()
        On Error Resume Next
        dim a : a = 9 / 0  '//Division by zero

        BadFunction = a
    End function


%>