Подтвердить что ты не робот

Возможно ли в ASP Classic использовать try-catch, например обработку ошибок?

Какие опции существуют в ASP Classic для обработки ошибок?

Например:

Я использую функцию Mail.SendMail, но при включении сервера тестирования она не работает, что нормально. Я хочу проверить, возможна ли отправка почты, а затем продолжить и/или показать сообщение.

Любые идеи?

4b9b3361

Ответ 1

Есть два подхода: вы можете кодировать в JScript или VBScript, которые имеют конструкцию, или вы можете использовать ее в своем коде.

Используя JScript, вы использовали бы следующий тип конструкции:

<script language="jscript" runat="server">
try  {
    tryStatements
}
catch(exception) {
    catchStatements
}
finally {
    finallyStatements
}
</script>

В своем ASP-коде вы выдумываете его, используя следующее при возобновлении ошибки в тот момент, когда вы попытаетесь проверить err.Number в точке улова, например:

<%
' Turn off error Handling
On Error Resume Next


'Code here that you want to catch errors from

' Error Handler
If Err.Number <> 0 Then
   ' Error Occurred - Trap it
   On Error Goto 0 ' Turn error handling back on for errors in your handling block
   ' Code to cope with the error here
End If
On Error Goto 0 ' Reset error handling.

%>

Ответ 2

Относительно Wolfwyrd anwer: "При ошибке" Продолжить "дальше" фактически отключает обработку ошибок! Не на. On Error Goto 0 превращает обработку ошибок обратно, потому что, по крайней мере, мы хотим, чтобы машина поймала ее, если мы не записали ее сами. Off = оставить его вам, чтобы справиться с этим.

Если вы используете On Error Resume Next, вам нужно быть осторожным о том, сколько кода вы включили после него: помните, фраза "If Err.Number < > 0 Then" относится только к самой предыдущей ошибке.

Если ваш блок кода после "On Error Resume Next" имеет несколько мест, где вы можете разумно ожидать его отказа, тогда вы должны поместить "If Err.number < > 0" после каждого из этих возможных сбоев строк, чтобы проверить выполнение.

В противном случае после того, как "on error resume next" означает только то, что он говорит, ваш код может терпеть неудачу на столько строк, сколько ему нравится, и исполнение будет продолжаться весело. Вот почему это боль в заднице.

Ответ 3

1) Добавьте On Error Resume Next вверху страницы

2) Добавьте следующий код внизу страницы

If Err.Number <> 0 Then

  Response.Write (Err.Description)   

  Response.End 

End If

On Error GoTo 0

Ответ 4

Довольно хороший способ справиться с этим для отсутствующих COM-классов:

Dim o:Set o = Nothing
On Error Resume Next
Set o = CreateObject("foo.bar")
On Error Goto 0
If o Is Nothing Then
  Response.Write "Oups, foo.bar isn't installed on this server!"
Else
  Response.Write "Foo bar found, yay."
End If

Ответ 5

Для любого, кто работал в ASP, а также более современных языков, этот вопрос вызовет смешок. По моему опыту использование настраиваемого обработчика ошибок (настроенного в IIS для обработки ошибок 500; 100) - лучший вариант для обработки ошибок ASP. В этой статье описывается подход и даже дает вам несколько примеров кода таблицы/базы данных.

http://www.15seconds.com/issue/020821.htm

Ответ 6

инструкция В разделе "Приобрести ошибку" Далее следует разместить поверх того, что мы хотим проверить.

  On Error Resume Next
  'Your code logic is here

Затем завершите утверждение вроде:

  If Err.Number <> 0 then

  'Your error message goes here'

  End if

Ответ 7

Прошло некоторое время с тех пор, как я был в ASP-стране, но там есть несколько способов:

try catch finally может быть разумно смоделирован в VBS (хорошая статья здесь здесь), и там событие под названием class_terminate вы можете смотреть и извлекать исключения во всем мире. Тогда есть возможность изменить язык скриптов...

Ответ 8

Некоторые сценарии не всегда позволяют разработчикам переключать язык сценариев.

Мое предпочтение, безусловно, относится к JavaScript (и я использовал его в новых проектах). Однако сохранение старых проектов по-прежнему необходимо и необходимо. К сожалению, они написаны в VBScript.

Итак, хотя это решение не предлагает правдивую функцию "try/catch", результат тот же, и это достаточно хорошо для меня, чтобы выполнить работу.

Ответ 9

если вы хотите скрыть или удалить страницу с ошибкой или добавить страницу об исключении.

protected void Page_Error(object sender, EventArgs e)
        {

           Response.Redirect("~/ErrorPage.aspx");
        }