python捕捉线程异常_在Python的调用程序线程中捕获线程的异常

问题是thread_obj.start()立即返回。您生成的子线程在其自己的上下文中执行,具有自己的堆栈。任何发生的异常都是在子线程的上下文中,它在它自己的堆栈中。我现在想到的信息传递到父线程的一种方法是通过使用某种消息传递,所以你可以看看。

尝试此大小:

import sys

import threading

import Queue

class ExcThread(threading.Thread):

def __init__(self, bucket):

threading.Thread.__init__(self)

self.bucket = bucket

def run(self):

try:

raise Exception('An error occured here.')

except Exception:

self.bucket.put(sys.exc_info())

def main():

bucket = Queue.Queue()

thread_obj = ExcThread(bucket)

thread_obj.start()

while True:

try:

exc = bucket.get(block=False)

except Queue.Empty:

pass

else:

exc_type, exc_obj, exc_trace = exc

# deal with the exception

print exc_type, exc_obj

print exc_trace

thread_obj.join(0.1)

if thread_obj.isAlive():

continue

else:

break

if __name__ == '__main__':

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值