Зачем мне этот блок try/кроме для передачи e в вызывающий код?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Зачем мне этот блок try/кроме для передачи e в вызывающий код?

Сообщение 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


Подробнее здесь: https://stackoverflow.com/questions/791 ... lling-code
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»