在Python中,如何捕获刚刚提出的异常?

时间:2011-09-24 10:19:19

标签: python xmpppy

我有这段代码:

jabberid = xmpp.protocol.JID(jid = jid)
    self.client = xmpp.Client(server = jabberid.getDomain(),
                              debug = [])
    if not self.client.connect():
        raise IOError('Cannot connect to Jabber server')
    else:
        if not self.client.auth(user = jabberid.getNode(),
                                password = password,
                                resource = jabberid.getResource()):
            raise IOError('Cannot authenticate on Jabber server')

它正在使用xmpppy。由于xmpppy在无法连接或验证时不会抛出任何异常,因此我需要自己抛出它们。问题是,如何捕获我抛出的异常只输出错误消息,而不是完整的追溯,并保持代码运行尽管它们仍在运行?

修改
这种结构是否合适?

def raise_error():
    raise IOError('Error ...')

if not self.client.connect():
    try:
        self.raise_error()
    except IOError, error:
        print error

2 个答案:

答案 0 :(得分:3)

尝试/除了python中的所有异常。这是一个例子:

def raise_error():
    raise IOError('Error Message')

print('Before Call.')

try:
    raise_error()
except IOError as error:
    print(error)

print('After Call.')

编辑:

制作一个更现实的例子:

def connect_to_client():
    ...
    if time_since_client_responded > 5000:
        raise ClientTimeoutError(client_name+" timed out.")

...
try:
    connect_to_client("server:22")
except ClientTimeoutError as error:
    print(error)
    sys.exit(1)

答案 1 :(得分:0)

使用try: ... except: ...。 Python教程解释了这个构造here的使用。