Ошибки: ApiError, CheckFailed, RecordError
Отказ операции с кодом, стадией и эффектом; проваленная проверка; ошибка журнала.
с 0.3.0
Методы
| Элемент | Сигнатура | Доступен с | API 3 |
|---|---|---|---|
ApiError | ApiError: details, code, __cause__ | 0.3.0 | новые коды |
CheckFailed | CheckFailed(ApiError, AssertionError) | 0.1.0-rc.1¹ | без изменений |
RecordError | RecordError(ValueError) | 0.3.0 | без изменений |
¹ Базовая форма; расширения 0.3.0 описаны в карточке.
Изменения API 3 (0.5.0)
Новые коды API 3: unawaited_operation, already_awaited, operation_timeout, halt_timeout, expression_call_forbidden, unsupported_async_command, call_incomplete.
Правильно
Ожидаемый отказ — refused; причина сохраняется в __cause__.
with t.refused("command_failed") as failure:
t.evaluate("no_such_symbol")
t.check("cause kept", failure.error.__cause__ is not None)Не рекомендуется
Перехват и подавление ApiError превращает отказ в ложный PASS.
from stm32_gdbtest import ApiError
try:
t.ret(1 << 40)
except ApiError:
pass # a refusal becomes a false PASSФрагменты показывают отклонённые или нежелательные приёмы, а не рабочий рецепт.
Фрагменты для тела сценария; символы прошивки условные.