在CTypes调用中捕获Python异常

2024-10-06 12:27:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个ctypes回调函数,如下所示:

def wrapper(ud, event):
    try:
        # ...
    except BaseException:
        wrapper.exc_info = sys.exc_info()
        return False

HandlerCallback = PYFUNCTYPE(c_int, py_object, Event)
cb = HandlerCallback(wrapper)
# pass `cb` to a C function

exc_info = getattr(wrapper, 'exc_info', None)
if exc_info:
    six.reraise(*exc_info)

不幸的是,这并不是100%的可能病例。我遇到了一个keyboardInteruppt的问题,它似乎是在C函数调用和对wrapper()的调用之间引发的。不幸的是,回溯一点帮助也没有。在

是否可以让PYFUNCTYPE包装器捕获任何异常,而不是打印它们,然后将它们交还给我,这样我可以在C函数调用之后重新读取异常?在


Tags: 函数infoeventdefctypeswrapperexccb