Что нового

[Сеть, интернет] Обработка ошибок

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Ув. Форумчане :IL_AutoIt_1: всем Доброго времени суток :beer:
Я пишу бота для сервисов типа likest и т.д. И вот при тестировании случилось так, что скрипт вылетел с крит. ошибкой.
Смысл ошибки мне понятен. "не успели подгрузиться страницы".
Но вопрос в следующем:
Как заставить скрипт не падать при появлении COM ошибки?
Я пытался впихнуть вот такой кусок:
Код:
; *******************************************************
; Пример 1 - Register and later deregister a custom and the default IE.au3 error handler
; *******************************************************

#include <IE.au3>
; Регистрирует пользовательский обработчик ошибок
_IEErrorHandlerRegister ("MyErrFunc")
; ... Что-то сделать
; Отменяет регистрацию пользовательского обработчика ошибок
_IEErrorHandlerDeregister ()
; ... Сделать что-нибудь другое
; Регистрирует обработчик COM ошибок, который по умолчанию
_IEErrorHandlerRegister ()
; Делать дальнейшую работу

Exit

Func MyErrFunc()
    ; Важно: переменная объекта ошибки ДОЛЖНА называться $oIEErrorHandler
    $ErrorScriptline = $oIEErrorHandler.scriptline
    $ErrorNumber = $oIEErrorHandler.number
    $ErrorNumberHex = Hex($oIEErrorHandler.number, 8)
    $ErrorDescription = StringStripWS($oIEErrorHandler.description, 2)
    $ErrorWinDescription = StringStripWS($oIEErrorHandler.WinDescription, 2)
    $ErrorSource = $oIEErrorHandler.Source
    $ErrorHelpFile = $oIEErrorHandler.HelpFile
    $ErrorHelpContext = $oIEErrorHandler.HelpContext
    $ErrorLastDllError = $oIEErrorHandler.LastDllError
    $ErrorOutput = ""
    $ErrorOutput &= "--> COM Error Encountered in " & @ScriptName & @CR
    $ErrorOutput &= "----> $ErrorScriptline = " & $ErrorScriptline & @CR
    $ErrorOutput &= "----> $ErrorNumberHex = " & $ErrorNumberHex & @CR
    $ErrorOutput &= "----> $ErrorNumber = " & $ErrorNumber & @CR
    $ErrorOutput &= "----> $ErrorWinDescription = " & $ErrorWinDescription & @CR
    $ErrorOutput &= "----> $ErrorDescription = " & $ErrorDescription & @CR
    $ErrorOutput &= "----> $ErrorSource = " & $ErrorSource & @CR
    $ErrorOutput &= "----> $ErrorHelpFile = " & $ErrorHelpFile & @CR
    $ErrorOutput &= "----> $ErrorHelpContext = " & $ErrorHelpContext & @CR
    $ErrorOutput &= "----> $ErrorLastDllError = " & $ErrorLastDllError
    MsgBox(4096,"COM Error", $ErrorOutput)
    SetError(1)
    Return
EndFunc  ;==>MyErrFunc


Но при запуске сразу краш:
Код:
>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "D:\Документы\Рабочий стол\Бот Вконтакте\AutoIt v3 Script.au3"    
"D:\?????????\??????? ????\??? ?????????\AutoIt v3 Script.au3" (7) : ==> Unknown function name.:
_IEErrorHandlerRegister ("MyErrFunc")
^ ERROR
>Exit code: 1    Time: 0.1121
Что не так в этом обработчике? Или я его как то не так использую?? :scratch:
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
JIereHga2010
Может стоит просто не допускать ситуации, в которых могут быть ошибки?
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Эти функции были вырезаны. Как альтернатива:
Код:
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
 
Автор
J

JIereHga2010

Новичок
Сообщения
68
Репутация
0
DarWiM сказал(а):
JIereHga2010
Может стоит просто не допускать ситуации, в которых могут быть ошибки?

Это я понимаю. Мне больше интересно, почему не работает обработчик ошибок. И как его вообще использовать.
 
Верх