Skip to main content
 首页 » 编程设计

python之为什么捕获 Exception 而不是更具体的 URLError 是不行的

2025年05月04日13haluo1

try: 
    response = urllib2.urlopen(req) 
except Exception, e: 
    logger.exception(e) 

是否有任何令人信服的论点反对在此代码段中捕获 Exception 而不是 urllib2.URLError ?

请您参考如下方法:

可能有意想不到的原因导致此处出现您不知道或无法知道的异常。您编写程序时好像这里唯一的异常可能是 urllib2.URLError,然后有一天 urllib2 的内部产生了一个异常,而这不是其中之一.它可能是一个错误,它可能只在满月时发生,它可能是你从未设计过的一些 future 品牌的异常(exception)。

如果发生这些情况,您真的想继续畅通无阻吗?

更一般地说,您捕获的异常类型是程序逻辑的组成部分。如果您不够具体,就会出现逻辑错误,故事结束 — 就像您从 if 语句中遗漏了一个子句一样。