python - 处理另一个线程中的异常

标签 python multithreading exception

当 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/

相关文章:

Python 记录重复的日志条目

Java 线程 Ping Pong 示例问题

java - 缺少强制输入时使用的最佳运行时异常是什么

java - 使用大量连接时 Kinesis 出现错误

python - selenium move_to_element 并不总是鼠标悬停

python - "foo(*a)"在 Python 中如何工作?

python - 检查 react 分页按钮

java - 如果运行时间很短(2 毫秒),是否值得使用多线程?

ios - 在 iOS 上使用 Grand Central Dispatch,如果常规 Objective-C block 不在调度队列中,它们会在哪个队列(如果有)上运行?

Python C API : how to get string representation of exception?