在使用json.loads时,我似乎无法捕捉到异常,尽管我特别指出了这一点。当我试图用大量的客户端连接快速发送数据时,我很大程度上看到了这一点。请参阅下面的错误:
(我在错误代码中用X替换了IP地址)
示例:未终止的字符串,起始于:第1行第49列(char 48)数据:'{"ap-hdop":0.55,"rtcmin":"38",“at”:3.134,"a‘error:未捕获的python异常,关闭通道(:从:第1列(char 48) //faraday_server_handler.py|collect_incoming_data|34 /usr/lib/python2.7/json/decoder.py|decode|366)开始的未终止字符串“
我理解这一点,代码失败是因为我忽略了行中的一个双引号:
{“ap-hdop”:0.55,"rtcmin":"38","ap-latdec":3.134,“a”
这一行通常要长得多,所以“a.应该继续并完成它的引号。”
以下是我的相关代码:
def collect_incoming_data(self, data):
"""Read an incoming message from the client, place JSON message data into buffer"""
#self.logger.debug('collect_fing_data() -> (%d bytes)\n"""%s"""', len(data), data)
try:
loaded_data = json.loads(data)
except ValueError, ex:
self.handle_error()
type,value,traceback = sys.exc_info()
print type
#print "Collect Incoming Data: " . time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())
print "EX: ", ex
print "Data: ",repr(data)有什么想法吗?我在互联网上搜索,看看我是否能找到这个问题,但我似乎是在设置捕捉例外,其他每个有这个问题的负载似乎建议这样做。
2016年3月1日编辑-晚报
注释掉异常handle_error(),让我看到更多的错误:
except ValueError, ex:
self.handle_error()
type,value,traceback = sys.exc_info()
print type
#print "Collect Incoming Data: " . time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())
print "EX: ", ex
print "Data: ",repr(data)下面是我的新错误,我已经注释掉了个人资料。很明显,我现在真正遇到的问题是-事实上,没有终止的字符串
示例:开始于:第1列49 (char 48)的未终止字符串:'{"ap-hdop":0.55,"rtcmin":"31","ap-latdec":XX.XXX,"a‘EX:没有JSON对象可以解码数据:'p-latdeg":34,“adc6”:2006年,"adc7":2007,"adc4":2004,"adc5":2005,"adc2":2002,"adc3":2003,"adc0":2000,“adc1”:2001年,"gpio-0":30,"gpio-1":50,"gpio-2":70,“速度”:5.0,“adc8”:2008年,"rtcday":"01","longdeg":118,"longdec":XX.XXX,“高度”:31.0,“ap-航速”:0.0,"ap-pdop":0.77,"lat-dir":"N","long-dir":"W","hdop":0.01,"ap-rf":0,“alt-单位”:“m”,"rtcdow":"2",“Call符号”:“XXXXX”,“ap-呼号”:“XXXXX”,"id":1,"ap-id":1,“rtc年份”:“2016”,"rtcmon":"03","ap-vdop":0.66,"ap-lat-dir":"N","vdop":0.02,"rtchour":"22","latdec":XX.XXX,"latdeg":34,“ap-long dir”:118,“ap-long dir”:XX.XXX,"rtcsec":"15",“ap-海拔”:86.0,"ap-long-dir":"W","pdop":0.01,“ap-alt-单位”:“M”,"faraday-port":0}‘
发布于 2016-03-03 17:16:53
好的,我最初的问题被回答了,那就是“为什么我没有捕捉到ValueError异常,即使我提供的代码就是这样做的呢?”
@tadhg麦克唐-詹森的评论是正确的,他删除了我对handle_error()的电话。
我还有一些其他的问题,但它们是不同的问题。谢谢!
https://stackoverflow.com/questions/35730102
复制相似问题