15
ตรวจสอบข้อยกเว้นของเธรดในตัวเรียกเธรดใน Python
ฉันใหม่กับ Python และการเขียนโปรแกรมแบบมัลติเธรดโดยทั่วไป โดยทั่วไปฉันมีสคริปต์ที่จะคัดลอกไฟล์ไปยังตำแหน่งอื่น ฉันต้องการให้วางในเธรดอื่นเพื่อให้สามารถแสดงผล....เพื่อระบุว่าสคริปต์ยังคงทำงานอยู่ ปัญหาที่ฉันมีอยู่คือหากไฟล์ไม่สามารถคัดลอกได้มันจะทำให้เกิดข้อยกเว้น ไม่เป็นไรหากทำงานในเธรดหลัก อย่างไรก็ตามการมีรหัสต่อไปนี้ใช้ไม่ได้: try: threadClass = TheThread(param1, param2, etc.) threadClass.start() ##### **Exception takes place here** except: print "Caught an exception" ในคลาสเธรดตัวเองฉันพยายามโยนข้อยกเว้นอีกครั้ง แต่ไม่ทำงาน ฉันเคยเห็นผู้คนที่นี่ถามคำถามที่คล้ายกัน แต่พวกเขาทั้งหมดดูเหมือนจะทำสิ่งที่เฉพาะเจาะจงมากกว่าสิ่งที่ฉันพยายามทำ (และฉันไม่ค่อยเข้าใจวิธีแก้ไขที่เสนอ) ฉันเคยเห็นคนพูดถึงการใช้งานของsys.exc_info()แต่ฉันไม่ทราบว่าจะใช้หรือไม่ ความช่วยเหลือทั้งหมดได้รับการชื่นชมอย่างมาก! แก้ไข:รหัสสำหรับชั้นด้ายอยู่ด้านล่าง: class TheThread(threading.Thread): def __init__(self, sourceFolder, destFolder): threading.Thread.__init__(self) self.sourceFolder = sourceFolder self.destFolder = destFolder def run(self): try: shul.copytree(self.sourceFolder, …