【发布时间】:2017-03-09 21:52:45
【问题描述】:
我正在阅读一些包含类似于以下功能的源代码:
def dummy_function():
try:
g = 1/0
except Exception as e:
raise Exception("There is an error: {}".format(e))
据我了解,所有异常都派生自 Exception 类,因此这应该会捕获所有错误。那么,跟随https://docs.python.org/3/tutorial/errors.html,这不就等于
def dummy_function():
try:
g = 1/0
except:
print "There is an error:"
raise
我注意到在这两种情况下打印输出的排列方式略有不同,但在我看来,第二种方法基本相同且不那么冗长。还是我错过了什么?
【问题讨论】:
-
不,它们不等价。新的
Exception实例附加了不同的消息。这就是重新加注的全部意义,以改变信息。 -
一条毯子
except:捕获BaseException并且它也是子类,而except Exception:没有。