Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

How to handle Python exception in Threads?

In the code given below, a thread is started. The thread waits for few seconds and checks for an event and if it is found, it stops, else an Exception is thrown.

I want to catch this Exception and would need help in doing so.

import threading
import time
def thread(args1, stop_event):
print "start thread"
stop_event.wait(12)
if not stop_event.is_set():
raise Exception("boom!")
pass
try:
t_stop = threading.Event()
t = threading.Thread(target=thread, args=(1, t_stop))
t.start()
time.sleep(15)
print "stop thread!"
t_stop.set()
except Exception as e:
print " It took too long"


1 Answer
Rajendra Dharmkar

The given code is rewritten to catch the exception

import sys
import threading
import time
import Queue
def thread(args1, stop_event, queue_obj):
print "start thread"
stop_event.wait(12)
if not stop_event.is_set():
try:
raise Exception("boom!")
except Exception:
queue_obj.put(sys.exc_info())
pass

try:
queue_obj = Queue.Queue()
t_stop = threading.Event()
t = threading.Thread(target=thread, args=(1, t_stop, queue_obj))
t.start()
time.sleep(15)
print "stop thread!"
t_stop.set()
try:
exc = queue_obj.get(block=False)
except Queue.Empty:
pass
else:
exc_type, exc_obj, exc_trace = exc
print exc_obj

except Exception as e:
print "It took too long"

OUTPUT

C:/Users/TutorialsPoint1/~.py
start thread
stop thread!
boom!

Advertisements

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.