PyOSC非常有礼貌地处理各种异常,但不幸的是,它很难调试。我怎么打败这个?
例如,我有一个编码错误,它报告为:
OSCServer: NameError on request from localhost:50542: global name 'cell' is not defined
通常在python中,这会抛出一个有用的跟踪异常。但是在PyOSC中,这就是我得到的。
如何关闭PyOSC的异常处理?
更新:一个月后,这个问题收到零评论或答案。猜猜很多人都没有使用Python,开放式声音控制和PyOSC模块。我终于在下面回答了我自己的问题。
答案 0 :(得分:0)
好的,我明白了。由于PyOSC只是轻微记录,因此源代码可作为文档。
以下是捕获异常的代码:
def handle_error(self, request, client_address):
"""Handle an exception in the Server's callbacks gracefully.
Writes the error to sys.stderr and, if the error_prefix (see setSrvErrorPrefix()) is set,
sends the error-message as reply to the client
"""
(e_type, e) = sys.exc_info()[:2]
self.printErr("%s on request from %s: %s" % (e_type.__name__, getUrlStr(client_address), str(e)))
if self.print_tracebacks:
import traceback
traceback.print_exc() # XXX But this goes to stderr!
if len(self.error_prefix):
self.sendOSCerror("%s: %s" % (e_type.__name__, str(e)), client_address)
这是在创建OSCServer实例时打开跟踪的简单方法:
import OSC
myoscserver = OSC.OSCServer( (host, port) )
myoscserver.print_tracebacks = True
这也适用于OSCClient:
myoscclient = OSC.OSCClient()
myoscclient.connect( (host, port) )
myoscclient.print_tracebacks = True
希望有所帮助。