Обработка ошибок в UFT/QTP
У меня есть структура, где методы вызываются внутри действия из библиотек функций. Я пытаюсь сделать обработку ошибок, чтобы избежать ошибок, генерируемых кодом, написанным внутри функции библиотеки.
Ниже мой код действия:
on error resume next
call TestMe()
if err.number Then: msgbox err.description
on error goto 0
А вот функция внутри библиотеки функций:
Function TestMe()
x = 1/0
End Function
Когда я выполню свой тест, on error resume next
кажется, не работает, так как я получаю всплывающее сообщение об ошибке для деления на ноль внутри функции TestMe().
Как я могу обработать эти ошибки, не перемещая код?
3 ответа
Удивительно, но все время использование QTP/UFT никогда не сталкивалось с таким случаем. Это было довольно интригующе. Я обнаружил (или так кажется на первый взгляд), что сфера on error resume next
ограничен своим уровнем (Библиотека / Действие) и не может быть перенесен ни на один из них.
Вы можете попробовать что-то вроде:
Код действия:
Call Test3()
Библиотека функций:
Function Test1()
x = 1/0
End Function
Function Test2()
Call Test1()
MsgBox "Test2"
End Function
Function Test3()
On Error Resume next
Call Test2()
MsgBox err.Description
End Function
Выполнение с использованием этого оператора продолжается до тех пор, пока не будет найден обработчик. Таким образом, вы можете создать условие, когда захотите.
Другой альтернативой является использование флага (может быть переменной среды), например
Environment("Flag") = True
Чье состояние можно проверить непосредственно в коде действия
Надеюсь это поможет. Я все еще попытаюсь покопаться больше об этом
Проверьте статью ниже. Это объясняет ту же проблему в деталях
https://sumeetkushwah.com/2014/08/12/implementing-try-catch-functionality-in-qtpuft/
on error resume next
call TestMe()
on error goto 0
if err.number Then: msgbox err.description
Function TestMe()
x = 1/0
End Function