Ошибки: ApiError, CheckFailed, RecordError

Отказ операции с кодом, стадией и эффектом; проваленная проверка; ошибка журнала.

с 0.3.0

Методы

ЭлементСигнатураДоступен сAPI 3
ApiErrorApiError: details, code, __cause__0.3.0новые коды
CheckFailedCheckFailed(ApiError, AssertionError)0.1.0-rc.1¹без изменений
RecordErrorRecordError(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

Фрагменты показывают отклонённые или нежелательные приёмы, а не рабочий рецепт.

Фрагменты для тела сценария; символы прошивки условные.

← Сброс и команды GDBВсе группы