[英]How do I catch exceptions that have specific error messages in Python?
当我有两个Python异常是相同的异常类但是有不同的错误消息时,我该如何单独捕获它们?
对于特定用例:我正在使用Facepy库来访问Facebook Graph API。 当API返回与Oauth无关的错误时,Facepy会引发facepy.exceptions.FacebookError
并传递Facebook API提供的错误消息。
我总是遇到两种不同的错误,我想要区别对待,解析它们的唯一方法是错误信息,但我无法弄清楚如何编写我的except
子句 - 这里是伪代码:
try:
#api query
except facepy.exceptions.OAuthError and error_message = 'object does not exist':
# do something
except facepy.exceptions.OAuthError and error_message = 'Hit API rate limit':
# do something else
如何编写这些except
子句以触发异常和错误消息?
假设Exception的错误消息在error_message
属性中(可能是其他内容 - 请查看Exception的__dict__
或source来查找):
try:
#api query
except facepy.exceptions.OAuthError as e:
if e.error_message == "object does not exist":
print "Do X"
elif e.error_message == "Hit API rate limit":
print "Do Y"
else:
raise
facepy
的OAuthError
派生自FacebookError
,并且具有message
属性。 https://github.com/jgorset/facepy/blob/master/facepy/exceptions.py#L8 。 所以,你可以使用if
条件和这样的message
try:
#api query
except facepy.exceptions.OAuthError as error:
if 'object does not exist' == error.message:
# do something
elif 'Hit API rate limit' == error.message:
# do something else
else:
raise
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.