旧ASP中的“on error goto 0”和“error resume next”是什么意思?

时间:2009-05-13 08:12:34

标签: asp-classic vbscript

我正在处理旧的ASP代码,我不确定on error goto 0error resume next构造的语义。

你能推荐一些有用的资源或直接给我看看吗?

4 个答案:

答案 0 :(得分:4)

接下来的错误恢复:如果程序中有异常,请忽略它并继续下一个语句。在我看来,我认为非常糟糕和丑陋。这就像有一个大的:

try
{
  // your code
}
catch
{
  // nothing! muhaha
}

在代码的每个方法中(或者更糟糕的是,围绕整个程序)。

错误转到0:禁用当前过程中定义的任何错误处理程序。这就像在你的代码周围有一个很大的尝试 - 一旦它达到这一行就会被禁用。

有关详细信息,请参阅MSDN

答案 1 :(得分:3)

出错时将执行代码带到页面中定义的特定代码簿标记。如果您想要在遇到错误时执行任何操作,这非常有用。

错误恢复接下来转到错误代码后的下一个执行代码。基本上忽略错误并继续使用代码。当您处理100个记录并且不希望代码在任何记录引发错误时停止执行时,这非常有用。

答案 2 :(得分:3)

on error resume next意味着忽略错误并继续下一步 on error goto 0表示接下来结束错误恢复 你也可以这样做

     <%
        on error resume next '<-- This code will resume and continue executing the code if there is an error



'YOUR CODE HERE

if err.number > 0 then  '<-- This code will look if there are any errors (even if resumed)
' or use If Err.Number <> 0 Then


        'DO SOMETHING IF ERROR
    %>
        Error Number <%= Err.Number %><BR>
        Error Description <%= Err.Description %><BR>        
        Source <%= Err.Source %><BR>

        LineNumber <%= Err.Line %><BR>

        <%end if%>

答案 3 :(得分:1)

我曾经使用“单次运行”Do Loops来构建涵盖多行代码和多个错误情况的经典ASP错误处理程序。该技术依赖于(补偿?)使用“On Error Resume Next”,一旦发生错误就会通过断开循环,然后在一些后续错误处理代码中测试并对错误类别做出反应。请注意,由于中断发生在与循环相同的函数的循环中,因此您仍然具有在循环仍在执行时设置的上下文(变量),因此您的错误处理程序应该使用该上下文来记录智能错误并清理适当的任何挥之不去的参考。

查看答案“拉里”提供的类似问题,以便快速举例说明 How to handle errors in VB Script