Это будет проблемой, если вы планируете выполнять все журналы вызовов от какого-либо слепого обработчика ошибок, который ничего не знает о коде, вызвавшем ошибку, как звучит ваш вопрос. Как вы решите, какие звонки регистрируются, а какие нет?
Более стандартная практика - использовать такие блоки для восстановления, если это возможно, и регистрировать ошибку (на самом деле, если это ошибка, к которой вы не были специально подготовлены, вы хотите знать о ней; используйте высокий уровень) , Но не полагайтесь на эти блоки для всей вашей информации о состоянии / отладке. Лучше посыпать ваш код журналом вызовов, прежде чем он попадет в обработчик ошибок. Таким образом, вы можете наблюдать полезную информацию о системе во время выполнения, когда она НЕ дает сбоя, и вы можете делать журналы вызовов разной степени серьезности. Например:
import logging
from traceback import format_exc
logger = logging.getLogger() # Gives the root logger. Change this for better organization
# Add your appenders or what have you
def handle_error(e):
logger.error("Unexpected error found")
logger.warn(format_exc()) #put the traceback in the log at lower level
... #Your recovery code
def do_stuff():
logger.info("Program started")
... #Your main code
logger.info("Stuff done")
if __name__ == "__main__":
try:
do_stuff()
except Exception,e:
handle_error(e)