捕捉异步类中的异常

2024-05-15 00:48:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在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中使用的。在


Tags: 函数importselfhost内容fooinitport

热门问题