首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Asynchat解码Python无法捕获ValueError异常

用Asynchat解码Python无法捕获ValueError异常
EN

Stack Overflow用户
提问于 2016-03-01 18:02:51
回答 1查看 149关注 0票数 2

在使用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.应该继续并完成它的引号。”

以下是我的相关代码:

代码语言:javascript
复制
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(),让我看到更多的错误:

代码语言:javascript
复制
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}‘

EN

回答 1

Stack Overflow用户

发布于 2016-03-03 17:16:53

好的,我最初的问题被回答了,那就是“为什么我没有捕捉到ValueError异常,即使我提供的代码就是这样做的呢?”

@tadhg麦克唐-詹森的评论是正确的,他删除了我对handle_error()的电话。

我还有一些其他的问题,但它们是不同的问题。谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35730102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档