Нет ничего плохого в том, чтобы ловить лог.Тем не менее, я бы порекомендовал:
try:
response = self.call_api_method()
except APIException, e: # or 'as e' depending on your Python version
self.log.exception('Oh noes!')
raise #Throw exception again so calling code knows it happened
else:
return response.someData
Просто набрав raise
, вы сохраните полную информацию о трассировке.Кроме того, более понятным является размещение кода, который будет происходить только в том случае, если у вас нет исключения в предложении else
, и будет более понятно, из какой строки вы перехватываете исключение.
Было бы также хорошодля вызывающего класса для ведения журнала, если он все равно обрабатывает ошибку, но это может быть неудобно для вашего приложения.
Редактировать: документация для try ... except ... else ... finally
находится в составных выражениях .