MST

星途 面试题库

面试题:Python多线程中如何捕获线程内的异常

在Python多线程编程中,当一个线程执行函数时可能会抛出异常。请描述如何捕获线程内抛出的异常并进行处理,给出简单代码示例说明。
28.5万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. 使用try - except块捕获异常: 在Python中,我们可以在每个线程执行的函数内部使用try - except块来捕获异常。
    import threading
    
    
    def worker():
        try:
            # 模拟可能抛出异常的代码
            result = 1 / 0
        except ZeroDivisionError as e:
            print(f"捕获到异常: {e}")
    
    
    t = threading.Thread(target = worker)
    t.start()
    t.join()
    
  2. 自定义线程类并处理异常: 也可以通过继承threading.Thread类,并重写run方法来处理异常。
    import threading
    
    
    class MyThread(threading.Thread):
        def run(self):
            try:
                # 模拟可能抛出异常的代码
                result = 1 / 0
            except ZeroDivisionError as e:
                print(f"捕获到异常: {e}")
    
    
    t = MyThread()
    t.start()
    t.join()
    

在上述两种方式中,try - except块能够捕获线程执行函数时抛出的异常,并进行相应的处理,如打印异常信息等。这样可以避免因线程内异常导致程序意外终止。