我正在python中实现一个基于asyncore的IRC bot,在捕捉asyncore分派类的方法中发生的异常时遇到了困难。以下是我的最小示例:
#!/usr/bin/env python
import asyncore
import socket
import sys
class foo (asyncore.dispatcher):
def __init__ (self, host, port):
asyncore.dispatcher.__init__ (self)
self.create_socket (socket.AF_INET, socket.SOCK_STREAM)
self.connect ((host, port))
def handle_exception(excType, excValue, trace):
print "Blah! Exception!"
quit()
sys.excepthook = handle_exception
foo ("127.0.0.1", 19991)
asyncore.loop()
它试图建立到127.0.0.1:19991的连接,但该连接没有任何内容,因此会导致连接拒绝错误并引发异常。问题是系统异常挂钩,它是handle_异常函数,但似乎没有捕捉到它:
^{pr2}$如果我在foo(“127.0.0.1”,19991)调用之前放置类似1/0的内容,那么异常处理程序将按预期工作。是否可以让异常处理程序函数捕捉异步类中发生的异常?如果是,怎么办?这是pythonv2.7.6中使用的。在
重写
dispatcher
的handle_error
方法。在相关问题 更多 >
编程相关推荐