1

Тема: AHK: ловим ошибки в цикле

Добрый день.
Просмотрел информацию о ErrorLevel, с целью продолжения цикла, когда в нем произошла ошибка.
Но необходимого не добился.
А именно, хочу добиться, когда происходит ошибка в программе, где запущен скрипт, скрипт записывал ошибку в лог (это смогу) и продолжал дальше итерации цикла.


loop
{
//если ошибка, записываем в log и продолжаем дальше
//тут что-то происходит



}

2

Re: AHK: ловим ошибки в цикле

После каждой команды проверяем состояние ErrorLevel. Если не равно нулю, записываем информацию об ошибке.

Антон Иваненко (Дед Мазай) пишет:
ErrorLevel

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

Особо отметим, что применение переменной ErrorLevel вместе с командой RunWait позволяет нам определить успешность выполнения программы с последующим её закрытием. Большинство программ, если их работа завершена успешно, имеют код возврата, равный нулю.

Каждый поток (thread) содержит своё собственное значение ErrorLevel. При этом, если работа текущего потока прервана другим потоком, то по возобновлению работы наш текущий поток будет иметь своё собственное значение ErrorLevel, а не значение ErrorLevel прервавшего его потока.

Примечание: учитывая то, что некоторые команды выдают значение ErrorLevel большее, чем 1, наилучшим способом будет не проверять, имеет ли переменная ErrorLevel значение 1, а имеет ли переменная ErrorLevel значение, отличное от нуля.

WinWait, MyWindow, , 1 ; ищем в течение 1 секунды, существует ли окно с названием MyWindow.
if ErrorLevel ; данная запись означает, что переменная ErrorLevel имеет значение, отличное от нуля.
    MsgBox, Окно не обнаружено.
else
    MsgBox, Окно успешно обнаружено.

3 (изменено: Maxfashko, 2013-10-19 14:43:03)

Re: AHK: ловим ошибки в цикле

я это смотрел.
в данный момент у меня в программу цикл открывает по одному файлs drag adn drop функцией
затем делает с ними действия.

loop
{
if errorlevel
break

//function drag and drop

continue
}

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

4

Re: AHK: ловим ошибки в цикле

Maxfashko пишет:

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

добавь ExitApp

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro