防止PyOSC捕获异常

时间:2014-04-18 01:57:52

标签: python debugging trace osc

PyOSC非常有礼貌地处理各种异常,但不幸的是,它很难调试。我怎么打败这个?

例如,我有一个编码错误,它报告为:

OSCServer: NameError on request from localhost:50542: global name 'cell' is not defined

通常在python中,这会抛出一个有用的跟踪异常。但是在PyOSC中,这就是我得到的。

如何关闭PyOSC的异常处理?

更新:一个月后,这个问题收到零评论或答案。猜猜很多人都没有使用Python,开放式声音控制和PyOSC模块。我终于在下面回答了我自己的问题。

1 个答案:

答案 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

希望有所帮助。