我有这个功能,包含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'
如何解决这个问题?并获得没有这个问题的代码?
答案 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))