0
我是Python开发新手,并试图找出如何捕获线程内的ConnectionError,然后退出。目前我拥有它,因此它可以捕获一般异常,但我想为不同的异常指定不同的异常处理,并且还会停止某些类型的异常的应用程序。Python线程捕捉异常并退出
我目前正在使用线程,但我开始怀疑我是否应该使用多线程呢?
下面是代码的副本:
import threading
import sys
from integration import rabbitMq
from integration import bigchain
def do_something_with_exception():
exc_type, exc_value = sys.exc_info()[:2]
print('Handling %s exception with message "%s" in %s' % \
(exc_type.__name__, exc_value, threading.current_thread().name))
class ConsumerThread(threading.Thread):
def __init__(self, queue, *args, **kwargs):
super(ConsumerThread, self).__init__(*args, **kwargs)
self._queue = queue
def run(self):
bigchaindb = bigchain.BigChain()
bdb = bigchaindb.connect('localhost', 3277)
keys = bigchaindb.loadkeys()
rabbit = rabbitMq.RabbitMq(self._queue, bdb, keys)
channel = rabbit.connect()
while True:
try:
rabbit.consume(channel)
# raise RuntimeError('This is the error message')
except:
do_something_with_exception()
break
if __name__ == "__main__":
threads = [ConsumerThread("sms"), ConsumerThread("contract")]
for thread in threads:
thread.daemon = True
thread.start()
for thread in threads:
thread.join()
exit(1)
谢谢,这清除了如何定义异常! –