Exception代码的AttributeError

时间:2013-02-10 08:58:35

标签: django exception

我有这个功能,包含try和except。我在获取异常代码时遇到了问题。

我先写了这样的代码:

def _runQuery(self, query, request=None)
    try:
        //request codes here
    except Exception, e:
        messages.error(
            request,
            'Error connecting to OFX server. URL: {0} ERROR: {1} {2}'.format(
                self.account.bank.ofx_url, e.code, e.msg))
        return ''

我的异常总是给我一个AttributeError,e对象没有属性'code'。所以我认为有时Exception没有代码渲染或者它是null。我再次重写我的代码,这是最新的。

    except Exception, e:
        code = ""
        if e.code:
            code = e.code
        messages.error(
            request,
            'Error connecting to OFX server. URL: {0} ERROR: {1} {2}'.format(
                self.account.bank.ofx_url, code, e.msg))

现在它给了我不同的错误 - AttributeError:'SSLError'对象没有属性'code'

如何解决这个问题?并获得没有这个问题的代码?

2 个答案:

答案 0 :(得分:1)

试试这个:

except Exception, e:
    code = ""
    if hasattr(e, 'code'):
        code = e.code
    messages.error(
        request,
        'Error connecting to OFX server. URL: {0} ERROR: {1} {2}'.format(
            self.account.bank.ofx_url, code, e.msg))

当您检查它是否存在时,不是试图访问异常的代码属性,而是使用hasattr(),它将返回False而不是抛出另一个异常。

答案 1 :(得分:-1)

查看hasattr and getattr函数:

messages.error(
        request,
        'Error connecting to OFX server. URL: {0} ERROR: {1} {2}'.format(
            self.account.bank.ofx_url, getattr(e, 'code', ''), e.msg))