我正在尝试将clienterror消息的输出与python中的字符串进行比较,但无法正常工作。 这种事可能吗?
我尝试了3种解决方法:(A)(我没有输出)
except ClientError as e:
a = "An error occurred (ValidationError) when calling the UpdateStack operation: Stack [name] does not exist"
b = "An error occurred (ValidationError) when calling the UpdateStack operation: No updates are to be performed."
if e is a:
print ('Stack [name] does not exist')
if e == b:
print ('No updates are to be performed')
(B)
print e[5]
IndexError: tuple index out of range
--
print (e[76:])
()
print (e[:-1])
()
(C) 我试图通过运行来了解句子中有多少部分
print (len(e))
但是我收到“ TypeError:类型为'ClientError'的对象没有len()“
所以...我真的不能将ClientError与字符串进行比较吗?
答案 0 :(得分:2)
否,您无法将字符串与异常进行比较。它们不是同一类型。 is
仅在从字面上看是同一对象时才返回true。即使==
在这里也不起作用,因为如上所述,它们不是同一类型。
不过,您可以将异常强制转换为字符串,然后使用in
来查看它是否包含消息:
ex_str = str(e)
a = "does not exist"
if a in ex_str:
print ('Stack [name] does not exist')
in
检查仅在str(e)
包含完整的错误消息时才起作用。如果不是,则需要以其他方式获取消息。如何处理异常消息取决于子类,并且我无权访问ClientError
对象进行测试;我也无法在线上找到它的定义。