【发布时间】:2014-06-10 18:52:10
【问题描述】:
我正在使用 imapclient 模块编写一些 python 代码,并想捕捉它的异常并向它们添加一些消息。我知道模块有以下异常:socket.error、socket.gaierror、IMAP4.error、IMAP4.abort、IMAP4.readonly
首先,人们是否通常将自定义异常放在单独的模块中并导入它们,以保持代码清晰和干净?如果没有,为什么不呢?
其次,知道这个模块有什么异常,我不确定如何捕获所有异常,然后破译捕获到哪个异常并使用自定义异常类适当地处理它。允许我添加其他消息或我可能想做的任何事情。
第三,我是否有一个“MyException”类,它可以为我可能期望和传入的五个异常中的每一个具有不同的逻辑?
我的第一次糟糕的尝试:
def some_func():
try:
login(email, password)
print "logged into account as: %s " %email
except Exception, e:
raise MyException, e
class MyException(Exception):
if Exception == socket.error:
print 'Additional messaging here'
elif Exception == something.else:
do this
【问题讨论】:
-
你的问题有点不清楚。你打算
MyException里面的代码做什么? -
对不起,我是初学者。和我在一起,我试图将捕获的异常传递给 MyException 类。然后我的异常处理程序将确定我期望的五个异常中的哪一个,并向其中添加一些打印语句。
-
我在下面给出了答案。为什么要捕获所有异常然后将它们传递给 MyException?通常最好捕获特定异常,然后在必要时为每个异常引发自定义异常。
-
除了我不知道最佳实践/什么是有意义的并尝试学习之外,没有什么特别的原因。谢谢你的回答!