0

我有这个包含 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 对象没有属性“代码”。所以我认为有时异常没有代码渲染或为空。我再次重写我的代码,这是最新的。

    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' object has no attribute 'code'

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

4

2 回答 2

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()which 将返回 False 而不是抛出另一个异常,而不是尝试访问异常的 code 属性。

于 2013-02-10T17:31:17.700 回答
-1

查看hasattr 和 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))
于 2013-02-10T10:23:48.917 回答