Я выполняю последовательную связь с электронным устройством c, и конец ответного сообщения определяется возвратом каретки (\r
). Если ответ искажен, я поднимаю пользовательское исключение. Я хотел бы, чтобы в моем сообщении об исключении отображался необработанный ответ, который может включать в себя возврат каретки.
Я заметил, что каретка возвращает своего рода ошибки, выводящие на печать / представление исключений Python.
Есть ли способ, чтобы исключения Python использовали что-то вроде repr
?
Потенциальный обходной путь
Я мог бы создать собственный класс исключений и переопределить некоторое поведение, чтобы заменить \r
на "CR"
, но я не уверен, есть ли более простой способ.
Я также не уверен, какие более сложные методы использовать, и где найти какие более сложные методы для использования. .
То, что я вижу
Ввод:
class SerError(Exception):
"""Serial communications error."""
some_msg = f"some_serial\rmessage."
print(f"some_msg = {some_msg}.\nrepr(some_msg) = {repr(some_msg)}.")
raise SerError(some_msg)
Выход:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
message..SerError: some_serial
Можно см. Python интерпретирует управляющий символ \r
путем сброса курсора в начало строки, где он печатает остаток сообщения.
Мне не нравится это поведение, поскольку оно перезаписывает мое исключение сообщение, в отличие от печати исходного сообщения.