0

我正在为 python 制作一个开源 twitch.tv API 包装器,到目前为止我有:

import urllib2
import json
import time
waittime = 1
baseurl = 'https://api.twitch.tv/kraken/'

class twitchchannelinfo():
    def __init__ (self,channel):
        self.channel = channel
        time.sleep(waittime)
        self.dict1 = json.loads(urllib2.urlopen(baseurl + 'channels/' + channel).read())

    def getstatus(self):
        return self.dict1 ['status']
    def getdisplay_name(self):
        return self.dict1 ['display_name']
    def getmature(self):
        return self.dict1 ['mature']
    def getchanurl(self):
        return self.dict1 ['url']
    def getcreated_at(self):
        return self.dict1 ['created_at']
    def getteams(self):
        return self.dict1 ['teams']
    def getgame(self):
        return self.dict1 ['game']
    def getupdated_at(self):
        return self.dict1 ['updated_at']

我想向这个 API 添加错误检查。服务器将返回一个这样的 json 响应来表示错误:

{
    "error": "Unprocessable Entity",
    "status": 422,
    "message": "Channel 'deeman' is not available on Twitch"
}

然后我使用json.loads. 我将如何检查这本字典的“错误”值,或者有更好的方法吗?

4

3 回答 3

2

我建议这样做:

if 'error' in self.dict1:
    raise ValueError("%s: %s" % (self.dict1["error"], self.dict1["message"]))
于 2013-03-12T17:41:38.883 回答
0
try:
    self.dict1[u'error']
except KeyError:
    ## Do something here

这只是另一种使用 try...except 的方法

于 2013-03-12T17:41:00.600 回答
0
if 'error' in self.dict1:
  # do blah
于 2013-03-12T17:38:22.033 回答