_execute_command() вызывает ошибку MQTTBrokerError.
Зачем мне нужен блок try/Exception в публикации() для распространения ошибки MQTTBrokerError в код который вызывает публикацию()? По результатам тестирования он распространяется с блоком try/Exception и не обходится без него. Без него блокfinally в _execute_command() не выполняется.
def publish(self, topic: str, message: str, qos=1):
qos_level = MQTTCommandHandler.QoSLevel(qos)
try:
self._execute_command(
self._command_handler.at_mqtt_publish,
f"Failed to publish message to topic {topic}",
topic, message, qos_level
)
except Exception as e:
raise e
def _execute_command(self, command_func, error_message, *args, **kwargs):
try:
command_func(*args, **kwargs)
self._command_handler.await_command()
with self._command_handler.lock:
broker_error = self._command_handler.broker_error
if broker_error:
error_code = self._command_handler.at_get_command_error()
raise MQTTBrokerError(f"{error_message}: MQTT Broker Error (code: {error_code})")
else:
logger.info(f"{command_func.__name__.replace('at_', '').replace('_', ' ').capitalize()} succeeded")
except Exception as e:
logger.error(f"{error_message}: {str(e)}")
logger.error("Traceback: %s", traceback.format_exc())
raise e
finally:
print("in _execute_command finally")
with self._command_handler.lock:
#in success case, command_in_progress is set to None in the URC handler
self._command_handler.command_in_progress = None
Подробнее здесь: https://stackoverflow.com/questions/791 ... lling-code
Зачем мне этот блок try/кроме для передачи e в вызывающий код? ⇐ Python
Программы на Python
-
Anonymous
1730826793
Anonymous
_execute_command() вызывает ошибку MQTTBrokerError.
Зачем мне нужен блок try/Exception в публикации() для распространения ошибки MQTTBrokerError в код который вызывает публикацию()? По результатам тестирования он распространяется с блоком try/Exception и не обходится без него. Без него блокfinally в _execute_command() не выполняется.
def publish(self, topic: str, message: str, qos=1):
qos_level = MQTTCommandHandler.QoSLevel(qos)
try:
self._execute_command(
self._command_handler.at_mqtt_publish,
f"Failed to publish message to topic {topic}",
topic, message, qos_level
)
except Exception as e:
raise e
def _execute_command(self, command_func, error_message, *args, **kwargs):
try:
command_func(*args, **kwargs)
self._command_handler.await_command()
with self._command_handler.lock:
broker_error = self._command_handler.broker_error
if broker_error:
error_code = self._command_handler.at_get_command_error()
raise MQTTBrokerError(f"{error_message}: MQTT Broker Error (code: {error_code})")
else:
logger.info(f"{command_func.__name__.replace('at_', '').replace('_', ' ').capitalize()} succeeded")
except Exception as e:
logger.error(f"{error_message}: {str(e)}")
logger.error("Traceback: %s", traceback.format_exc())
raise e
finally:
print("in _execute_command finally")
with self._command_handler.lock:
#in success case, command_in_progress is set to None in the URC handler
self._command_handler.command_in_progress = None
Подробнее здесь: [url]https://stackoverflow.com/questions/79159881/why-do-i-need-this-try-except-block-to-propagate-e-to-calling-code[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия