在主线程中捕获子线程发生的具体异常,可以使用try-except语句块来实现。

首先,需要在子线程中使用try-except语句块来捕获异常,并将异常信息存储到一个全局变量中,例如:

import sys

def child_thread():
    try:
        # 子线程的代码
        ...
    except Exception as e:
        # 将异常信息存储到全局变量中
        sys.exc_info()[0] = e

然后,在主线程中使用join()方法来等待子线程执行完成,并在join()方法之后使用try-except语句块来捕获子线程中存储的异常信息,例如:

import threading

def main_thread():
    # 创建子线程
    thread = threading.Thread(target=child_thread)
    # 启动子线程
    thread.start()
    # 等待子线程执行完成
    thread.join()
    
    # 捕获子线程中的异常信息
    try:
        # 子线程中存储的异常信息
        raise sys.exc_info()[0]
    except Exception as e:
        # 处理异常信息
        ...

在主线程中,可以通过sys.exc_info()[0]来获取子线程中存储的异常信息。然后,可以根据具体的异常类型来处理异常

主线程捕获子线程发生的具体异常

原文地址: https://www.cveoy.top/t/topic/izb4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录