【问题标题】:Can't catch pickle error无法捕捉泡菜错误
【发布时间】:2013-05-29 01:11:25
【问题描述】:

我有一个线程不断等待通过套接字输入。它接收的东西很好,但是如果我尝试pickle.loads 字符串,那么我会收到一个错误。这很容易捕获,但这是它返回的错误:

Exception in thread Listening to <socket._socketobject object at 0x232cd00> at ('127.0.0.1', 48774):
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/[redacted]/Server.py", line 46, in Listen
    pickled = pickle.loads(data)
  File "/usr/lib/python2.7/pickle.py", line 1382, in loads
    return Unpickler(file).load()
  File "/usr/lib/python2.7/pickle.py", line 858, in load
    dispatch[key](self)
  File "/usr/lib/python2.7/pickle.py", line 958, in load_binfloat
    self.append(unpack('>d', self.read(8))[0])
error: unpack requires a string argument of length 8

我已经尝试通过简单的try...except 没有规范的检查成功地捕捉到了这个问题,但我不知道如何捕捉这个“错误”,因为pickle.struct.error 只适用于少数情况。

【问题讨论】:

    标签: python multithreading sockets pickle


    【解决方案1】:

    对,原来struct.error 是没有被捕获的错误...

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 2015-07-21
      • 2010-12-05
      • 2021-07-10
      • 2022-01-19
      • 2013-10-12
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      相关资源
      最近更新 更多