Что нового

Аналог try{} catch{} для AutoIt. Обработка ошибок кода.

Suppir

Продвинутый
Сообщения
967
Репутация
62
Добрый день!

Как вы решаете обработку ошибок в AutoIt? Допустим, у меня длинная функция с кучей действий. На каком-то из действий может теоретически выскочить ошибка. В c# или java пишем:

Код:
try{
	действие1
	действие2
	действие3
}
catch{
	что делать в случае ошибки
}
Это довольно удобно. В AutoIt пока что вижу только такой вариант:

Код:
действие1
if @error = 0 Then
	действие2
	if @error = 0 Then
		действие3
		if @error != 0 Then
			что делать в случае ошибки
		EndIf
	else
		что делать в случае ошибки
	EndIf
else
	что делать в случае ошибки
EndIf


Есть ли какие-то другие варианты обработки ошибок? Как вы поступаете?
 

beliy

Продвинутый
Сообщения
372
Репутация
72
Для вашего случая наверное как-то так:
Код:
if действие1 Then
    if действие2 Then
        if Not действие3 Then
            что делать в случае ошибки
        EndIf
    else
        что делать в случае ошибки
    EndIf
else
    что делать в случае ошибки
EndIf
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Suppir
Надо изучать c# чтобы понять что вы хотите. Создайте функцию и вызывайте её при проверке ошибок.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
У меня обычно так:
Код:
Func Main()
	_Work()
	Switch @error
		Case 1
			что делать в случае ошибки
		Case 2
			что делать в случае ошибки
		Case 3
			что делать в случае ошибки
	EndSwitch
EndFunc


Func _Work()
	действие1
	If @error Then Return SetError(1, @error, 0)
	действие2
	If @error Then Return SetError(2, @error, 0)	
	действие3
	If @error Then Return SetError(3, @error, 0)	
EndFunc
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
inververs
Это стандартная схема любого UDF.

Suppir
Если хотите быстро учится, попробуйте разобрать работу функций UDF. Сразу будут ясны самые передовые разработки профессионалов. Всякие сложные манипуляции с кодом.
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
inververs
Интересный вариант, спасибо.

Аналог throw exception в c#.
 
Верх