我有一个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)
回调函数,如下所示:
KeyboardInteruppt
不幸的是,这并不占据100%的可能情况。例如。我在C函数调用和wrapper()
调用之间似乎遇到了PYFUNCTYPE
的问题。不幸的是,回溯根本没有帮助。
是否有可能使child
包装器捕获任何异常,不打印它们,然后将它们交还给我,以便在C函数调用后可以重新加载异常?