当 Python 中另一个线程中的代码不受您控制时,检测和处理该另一个线程中的异常的“正确”方法是什么?
例如,假设您设置一个需要 2 个参数的函数作为 threading.Thread
对象的目标,但在运行时尝试传递它 3。Thread
在您 try catch 它之前,模块将在另一个线程上抛出异常。
示例代码:
def foo(p1,p2):
p1.do_something()
p2.do_something()
thread = threading.Thread(target=foo,args=(a,b,c))
thread.start()
在不同的线程上引发异常。您将如何检测并处理该问题?
最佳答案
我认为你只能装饰你的目标函数或子类threading.Thread来处理异常。
def safer( func ):
def safer(*args,**kwargs):
try:
return func(*args,**kwargs)
except Exception,e:
print "Couldn't call", func
# do_stuff( e )
return safer
thread = threading.Thread(target=safer(foo),args=(1,2,3))
关于python - 处理另一个线程中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1925635/