ASP-Classic: получить описание ошибки в HTML-теги

Как получить описание ошибки из vb в html? Я пробовал ниже случай, который никогда не работает.

Код:

if err then
Response.Write " :Err Information==>>"          
%>
<HTML><table><tr><td bgcolor="#FF0000"><%=err.Description%></td></tr></table></HTML>
<%
End if
On Error Goto 0

Спасибо


person user3842389    schedule 04.09.2014    source источник


Ответы (2)


Обычно скрипт останавливает выполнение при ошибке. Чтобы увидеть, что это за ошибка, вы должны использовать On Error Resume Next перед строкой, которая может вызвать ошибку, а затем проверить объект Err.

Пример:

<%
On Error Resume Next
Dim i : i = 1/0 'division by zero should raise an error

If Err Then
'or you can check 
'If Err.number <> 0 Then
%>
    <table>
    <tr>
        <td>:Err Information==>></td>
        <td bgcolor="#FF0000"><%=err.Description%></td>
    </tr>
    </table>
<%
End If
On Error Goto 0
%>

Подробнее об обработке ошибок в ASP: как создать пользовательскую страницу обработки ошибок ASP

person Flakes    schedule 04.09.2014
comment
Вы проверяли это? Пожалуйста, будьте более ясны. Это не работает для меня. - person user3842389; 04.09.2014
comment
я проверил это, и это работает для меня. Какая часть не понятна? - person Flakes; 04.09.2014
comment
Просто чтобы расширить этот ответ, вы также можете настроить пользовательские ловушки ошибок в IIS, чтобы ловить ваши ошибки. Эта страница расскажет вам все о том, как отлавливать ошибки на ваших asp-страницах и возвращать их обратно. - person Paul; 04.09.2014

Что @SearchAndResQ не упоминание, почему ваш код не работает.

Проблема здесь в том, что классический ASP остановит выполнение и вернет клиенту HTTP 500 Internal Server (в зависимости от того, как настроен сервер, будет зависеть, насколько подробным будет ответ).

Чтобы остановить остановку выполнения при обнаружении ошибки или вызове ее вручную с помощью Err.Raise(), используйте On Error Resume Next. Этот оператор указывает среде выполнения VBScript переходить к следующей строке при обнаружении ошибки и заполнять объект Err.

Чтобы затем зафиксировать эту ошибку, проверьте свойство Err.Number, чтобы узнать, возникла ли ошибка. Когда вы закончите, используйте On Error Goto 0, чтобы сбросить обработку ошибок до состояния по умолчанию (остановка выполнения при ошибке).

Если вы хотите проверить несколько ошибок между On Error Resume Next и On Error Goto 0 внутри проверки ошибок (If Err.number <> 0 Then), используйте Err.Clear() для сброса объекта Err (Err.Number = 0).

'We are expecting the next statement to sometimes fail so try to trap the error.
On Error Resume Next

' << Statement here you expect to error will be skipped >>

'Check whether error occurred.
If Err.Number <> 0 Then
  'An error occurred, handle it here (display message etc).

  'Error has been handled reset the Err object.
  Call Err.Clear() 'Err.Number is now 0
End If
'Stop trapping errors
On Error Goto 0
person user692942    schedule 04.09.2014
comment
Спасибо за редактирование, и я подумал, что разместить эту ссылку лучше, чем объяснять вещи. Не очень хорошо со словами :) - person Flakes; 04.09.2014
comment
@SearchAndResQ Я тоже не просто пытаюсь. - person user692942; 04.09.2014