try:
response = urllib2.urlopen(req)
except Exception, e:
logger.exception(e)
在此代码段中是否有反对捕获Exception
而不是urllib2.URLError
的令人信服的论据?
答案 0 :(得分:7)
可能有意外的原因可能会在此处提出您不知道或无法了解的异常。你编写你的程序,好像这里唯一的例外可能是urllib2.URLError
,然后有一天urllib2
的内部产生了一个不是其中之一的异常。这可能是一个错误,它可能只发生在满月上,它可能是你从未设计过的未来品牌。
如果发生这种情况,真的是否希望继续畅通无阻?
更一般地说,您捕获的异常类型是程序逻辑中不可或缺的一部分。如果你不够具体,你会有一个逻辑错误,故事结束 - 就像你从if
陈述中省略一个条款一样。
答案 1 :(得分:1)
>>> import urllib2
>>> try: response = urllib2.urlopen(req)
... except Exception, e: print e
...
name 'req' is not defined
>>>
没有太多意义,也不是你的片段。
答案 2 :(得分:0)
好或不,取决于背景。如果只有一种类型的异常可以发生,或者你不关心单独处理不同类型的问题,那么简单地捕获Exception就完全没问题了。它也没有性能影响。但是,如果您的代码假定由其他人使用和修改,则可以提高可读性,从而提供特定的异常。