Найти - Пользователи
Полная версия: Можно ли поймайть исключение в родительском классе потока?
Начало » Python для новичков » Можно ли поймайть исключение в родительском классе потока?
1
wonderfulll
Есть родительский класс в нём запускаем поток. Можно ли в родительском классе поймать ошибку дочернего потока? Что-то наподобие ниже приведённого.

try:
self.thr = SomeThreadClass()
time.sleep(1)
self.thr.start()
except Exception, error:
print str(error)
class SomeThreadClass:
def run(self):
try:
some_action()
except Exception, error:
raise Exception('Some action failed')
truporez
Практика показывает, что только сообщением через queue или pipe.
o7412369815963
а с родительским классом ничего не случится (не выпадет) если в дочернем вылетит except не прекрытый через try..except ?
truporez
Обычно нет, дохнет только нитка.
wonderfulll
Может кто ещё ссылочку подкинет на пример использования Queue для передачи исключений.
truporez
Ну так в чем проблема?

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from multiprocessing import Queue, Process

class MyMegaException(Exception): pass

def deadlytask(queue):
queue.put(MyMegaException("Kranty 6"))

def main():
queue = Queue()
task = Process(target=deadlytask, args=(queue,))
task.start()
while task.is_alive():
data = queue.get()
raise data

if __name__ == '__main__':
main()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB