Tôi đang cố gắng để bắt một ngoại lệ trong một thread và tái nâng nó trong các chủ đề chính:Re-nâng Python ngoại lệ và giữ gìn vết đống
import threading
import sys
class FailingThread(threading.Thread):
def run(self):
try:
raise ValueError('x')
except ValueError:
self.exc_info = sys.exc_info()
failingThread = FailingThread()
failingThread.start()
failingThread.join()
print failingThread.exc_info
raise failingThread.exc_info[1]
này về cơ bản hoạt động và mang lại kết quả như sau:
(<type 'exceptions.ValueError'>, ValueError('x',), <traceback object at 0x1004cc320>)
Traceback (most recent call last):
File "test.py", line 16, in <module>
raise failingThread.exc_info[1]
Tuy nhiên, nguồn ngoại lệ trỏ tới dòng 16, nơi xảy ra sự cố lại. Trường hợp ngoại lệ ban đầu xuất phát từ dòng 7. Làm thế nào để tôi phải thay đổi chính chủ đề để các đầu ra đọc:
Traceback (most recent call last):
File "test.py", line 7, in <module>
tuyệt vời, tôi đã được tái huy động ngoại lệ từ chủ đề khác nữa, nhưng không bao giờ đi xa bạn muốn :) –
trùng lặp có thể xảy ra ["Ngoại lệ bên trong" (với traceback) bằng Python?] (Http://stackoverflow.com/questions/1350671/inner-exception-with-traceback-in-python) –