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を与えます。そのため、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'がありません

これを修正する方法は?そして、この問題なしでコードを取得しますか?

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()代わりに、別の例外をスローする代わりにFalseを返すを使用できます。

于 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 に答える