Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में कॉलर थ्रेड में थ्रेड के अपवाद को कैसे पकड़ें?

समस्या यह है कि thread_obj.start() तुरंत लौटता है। आपके द्वारा प्रारंभ किया गया चाइल्ड थ्रेड अपने स्वयं के संदर्भ में, अपने स्वयं के स्टैक में निष्पादित होता है। वहां होने वाला कोई भी अपवाद चाइल्ड थ्रेड के संदर्भ में होता है। आपको कुछ संदेश भेजकर इस जानकारी को पैरेंट थ्रेड तक पहुंचाना होगा।

कोड को निम्नानुसार फिर से लिखा जा सकता है:

import sys
import threading
import Queue
class ExcThread(threading.Thread):
def __init__(self, foo):
threading.Thread.__init__(self)
self.foo = foo
def run(self):
try:
raise Exception('An error occurred here.')
except Exception:
self.foo.put(sys.exc_info())
def main():
foo = Queue.Queue()
thread_obj = ExcThread(foo)
thread_obj.start()
while True:
try:
exc = foo.get(block=False)
except Queue.Empty:
pass
else:
exc_type, exc_obj, exc_trace = exc
print exc_type, exc_obj
print exc_trace
thread_obj.join(0.1)
if thread_obj.isAlive():
continue

  1. पायथन में अंकगणित त्रुटि अपवाद कैसे पकड़ें?

    अंकगणित त्रुटि अपवाद संख्यात्मक गणनाओं के लिए होने वाली सभी त्रुटियों के लिए आधार वर्ग है। यह उन अंतर्निहित अपवादों के लिए आधार वर्ग है जैसे:ओवरफ्लोएरर, ज़ीरोडिविजन एरर, फ़्लोटिंगपॉइंट एरर हम दिए गए कोड में अपवाद को इस प्रकार पकड़ सकते हैं उदाहरण import sys try: 7/0 except ArithmeticError as e: pri

  1. पायथन में IOError अपवाद कैसे पकड़ें?

    IOError अपवाद यह एक त्रुटि है जब कोई इनपुट/आउटपुट ऑपरेशन विफल हो जाता है, जैसे कि प्रिंट स्टेटमेंट या ओपन () फ़ंक्शन जब कोई फ़ाइल खोलने का प्रयास करता है जो मौजूद नहीं है। इसे ऑपरेटिंग सिस्टम से संबंधित त्रुटियों के लिए भी उठाया जाता है। यदि दिए गए कोड को एक कोशिश ब्लॉक में लिखा गया है, तो यह एक

  1. पायथन में KeyError अपवाद कैसे पकड़ें?

    एक KeyError तब उठाया जाता है जब कोई मान किसी डिक्शनरी की कुंजी के रूप में नहीं मिलता है। अपवाद को पकड़ने और उसके प्रकार को खोजने के लिए दिए गए कोड को निम्नानुसार फिर से लिखा गया है। उदाहरण import sys try: s = {'a':5, 'b':7}['c'] except: print (sys.exc_info()) आउटपुट (<typ