python多线程中一个线程出了问题,没有throw出exception。

我用多线程爬取一个论坛的页面,第十个页面爬取出错,但是为什么对应的线程没有执行except 后面的print('error'),而是忽略掉了错误,继续执行后面的代码?

class myThread (threading.Thread):

    def __init__(self, threadID, name, url):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.url = url

    def run(self):
        print('%s线程启动' %self.name)
        content = '*************************************************\n正在爬取{}'.format(self.url)
        try:
            for card in get_card_url(self.url):
                    # print(card)
                content = content + one_card(card)
        except :
            print('error')
        threadLock.acquire()
        print(content)
        # 释放锁
        threadLock.release()

        print('%s线程退出' %self.name)

所以我就是想问: 如果多线程中,某一个线程执行出错,程序会抛出错误么?还是直接忽略继续向下执行

阅读 3.7k
1 个回答

主线程会继续进行,stdout 和 stderr还是会输出的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题