如何在Python中捕获具有特定错误消息的异常?

时间:2013-11-25 09:29:42

标签: python exception-handling

当我有两个Python异常是相同的异常类但是有不同的错误消息时,我该如何单独捕获它们?

对于特定用例: 我正在使用Facepy library来点击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子句以触发异常和错误消息?

2 个答案:

答案 0 :(得分:4)

假设Exception的错误消息在error_message属性中(可能是其他内容 - 请查看Exception的__dict__或来源以查找):

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

答案 1 :(得分:3)

facepy的{​​{1}}来自OAuthError且具有FacebookError属性。 https://github.com/jgorset/facepy/blob/master/facepy/exceptions.py#L8。因此,您可以将message条件与此{/ 1}}一起使用

if