首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python日志记录异常

Python日志记录异常
EN

Stack Overflow用户
提问于 2011-08-10 05:09:35
回答 1查看 19.4K关注 0票数 32

我目前正在编写一个包装器类。我希望能够正确地记录异常,但允许调用方法知道发生的异常。我的类看起来像这样:

import logging

log = logging.getLogger('module')

class MyAPIWrapper(library.APIClass):

    def __init__(self):
        self.log = logging.getLogger('module.myapiwrapper')


    def my_wrapper_method(self):
        try:
            response = self.call_api_method()
            return response.someData
        except APIException, e:
            self.log.exception('Oh noes!')
            raise e #Throw exception again so calling code knows it happened

我有点怀疑捕获和异常只是为了记录它,然后重新引发它,这样调用代码就可以对它做一些事情。这里的正确模式是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-10 05:16:23

捕获到日志并没有什么问题。然而,我建议:

    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的文档在compound statements下。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7003034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档