我有一个例外,我试图获得args,但如果失败。
print hasattr(e, 'args')
print type(e.args)
print hasattr(e.args, '1')
print hasattr(e.args, '0')
print '1' in e.args
print '0' in e.args
print 1 in e.args
print 0 in e.args
print e.args[0]
print e.args[1]
打印:
True
<type 'tuple'>
False
False
False
False
False
False
Devices not found
4
答案 0 :(得分:1)
您只需使用in
运算符:
>>> try:
... raise Exception('spam', 'eggs')
... except Exception as inst:
... print inst.args
... print 'spam' in inst.args
...
('spam', 'eggs')
True
如果您的代码返回False
,那么很可能1
不是该异常的参数。也许发布引发异常的代码。
您可以通过0
检查元组是否具有N
到len
的位置。
答案 1 :(得分:0)
您可以检查元组的长度:
t = 1, 2, 3,
if len(t) >= 1:
value = t[0] # no error there
...或者您可以检查一下IndexError
,我会说这是更加pythonic:
t = 1, 2, 3,
try:
value = t[4]
except IndexError:
# handle error case
pass
后者是一个名为EAFP: Easier to ask for forgiveness than permission的概念,这是一种众所周知且常见的Python编码风格。