在Python中,如何捕获刚刚提出的异常?
问题描述:
我有这段代码:在Python中,如何捕获刚刚提出的异常?
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
答
尝试/除了在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)
这是更好地创建用户定义的异常为[Exception类(HTTP:// docs.python.org/tutorial/errors.html)。 – Ben
这是真的,我只是模拟这个答案的问题。 –
@Lattyware请看这个问题的编辑。你是这个意思吗? –