我正在尝试创建我自己的自定义编码器,主要重用JSONEncoder行为:
BinaryJSONEncoder(JSONEncoder):
def _iterencode(self, o, markers):
sys.stderr.write("Calling custom _iterencode\n")
try:
return JSONEncoder._iterencode(self, o, markers)
except UnicodeDecodeError:
sys.stderr.write("Got exception\n")
return ""
但是,我仍然得到一个未处理的unicodedecoderror,因为一旦调用了_iterencode方法,它会在返回之前循环使用它的生成器。奇怪的是,异常源于\u iterencode方法,但我的方法不在返回堆栈中!但是我的函数被调用了,因为Apache错误日志中会出现“调用自定义的iterencode”消息。在不从头开始实现整个方法的情况下,如何解决这个问题?在
这是堆栈:
^{pr2}$
解决此问题的唯一可行方法似乎是再次使用二进制数据的处理程序来实现整个函数:
从json编码器导入encode_basestring_ascii,encode_basestring
我理解抛出异常时收益率退出的问题,但为什么不能在没有异常的情况下调用超类方法,然后只调用超类方法?在
相关问题 更多 >
编程相关推荐