Программирование в IIS


Обработка ошибок - часть 2


'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub_Exit_Done: 'return success value

On Error Resume Next 'destroy objects Exit Function

Sub_Error_Handler: ProcessErr "message about the failure in terms of function"

Листинг 1.5.

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

  • фиксирует информацию об ошибках в журнале событий Windows для дальнейшего анализа;
  • записывает ошибки в локальную переменную класса для доступа к ней программы-потребителя.

Журнала не будет заполняться до тех пор, пока компонент не будет скомпилирован, по причине ограничения VB и мер безопасности Windows. При выполнении компонента в VB IDE журналы событий не ведутся.

В листинге 1.6 приведен код подпрограммы ProcessErr.

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 'ProcessErr 'formats error and stores it in error local 'then write to event log. Event logging 'will not function in IDE - only in compiled. ' 'in: vsMessage - usually denoting function 'out: nothing '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Private Sub ProcessErr(ByVal vsMessage As String)

Const ERROR_SEPARATOR = " -- " Const NOW_TIME_FORMAT = "yyyy mmm d hh:mm:ss" Const A_SPACE = " " Const ERROR_NUM = " Error #" Const ERROR_BY = " was generated by "

Dim sDateTime As String

'get a time data stamp sDateTime = CStr(Format(Now, NOW_TIME_FORMAT)) & _ ERROR_SEPARATOR

'construct the error entry vsMessage = sDateTime & vsMessage

'add err object data to the error entry m_sErrorMessage = vsMessage & ERROR_NUM & Err.Number _ & ERROR_BY & Err.Source & A_SPACE & Err.Description & vbCrLf

'write to event log App.LogEvent m_sErrorMessage, vbLogEventTypeError

End Sub

Листинг 1.6. ProcessErr Subroutine – Error Logger and Formatting

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




- Начало -  - Назад -  - Вперед -