2

我有这段代码:

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
4

2 回答 2

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)
于 2011-09-24T10:34:36.843 回答
0

使用try: ... except: .... Python 教程在这里解释了这个结构的使用。

于 2011-09-24T10:22:05.943 回答