Что означают «при ошибке перейти к 0» и «ошибка возобновится далее» в старом ASP? - PullRequest
5 голосов
/ 13 мая 2009

Я работаю со старым ASP-кодом и не уверен в семантике конструкции on error goto 0 и error resume next.

Можете ли вы порекомендовать мне несколько полезных ресурсов или осветить меня напрямую?

Ответы [ 4 ]

4 голосов
/ 13 мая 2009

При ошибке возобновить следующее: если в программе есть исключение, просто проигнорируйте его и переходите к следующему оператору. Считается очень плохим и некрасивым, и справедливо, на мой взгляд. Это как большой:

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

в каждом методе вашего кода (или, что еще хуже, вокруг всей программы ).

При ошибке Перейти к 0: отключает любой обработчик ошибок, определенный в текущей процедуре. Это как большая попытка поймать ваш код, который отключается, как только он попадает в эту строку.

Для получения дополнительной информации см. MSDN .

3 голосов
/ 26 июня 2012

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 голосов
/ 13 мая 2009

при ошибке перейти к приводит код выполнения к определенной метке кодовой книги, определенной на странице. Это полезно, если вы хотите выполнить что-либо в случае возникновения ошибки.

При возобновлении ошибки next переходит к следующему коду выполнения после ошибочного кода. В основном игнорирует ошибку и продолжает код. Это особенно полезно, когда вы обрабатываете сотни записей и не хотите, чтобы код останавливал выполнение в случае, если какая-либо запись выдает ошибку.

1 голос
/ 11 декабря 2013

Раньше я использовал циклы Do «по одному запуску» для создания классических обработчиков ошибок ASP, которые покрывали несколько строк кода и несколько случаев ошибок. Этот метод опирается (компенсирует?) На использование «On Error Resume Next», прерывая цикл, как только возникает ошибка, затем тестируя и реагируя на классы ошибок в некотором последующем коде обработки ошибок. Обратите внимание, что, поскольку разрыв происходит в цикле в той же функции, что и цикл, у вас все еще есть контекст (переменные), которые были установлены, когда цикл все еще выполнялся, поэтому ваш обработчик ошибок должен использовать этот контекст для регистрации интеллектуальных ошибок и очистки любые оставшиеся ссылки в зависимости от обстоятельств.

Ознакомьтесь с ответом «Ларри» на аналогичный вопрос, чтобы получить быстрый пример этого.
Как обрабатывать ошибки в VB Script

...