traceback.format_exception_only
有参数(etype, value)
。如果我要格式化e
,我会在什么情况下调用format_exception_only(type(e), e)
?
sys.exc_info
返回类型,值和回溯。上下文管理器的__exit__
方法与参数具有相同的三个方面。这种类型不是多余的吗?它可以等于type(value)
以外的其他东西吗?
答案 0 :(得分:4)
Python用于在1.x天内允许字符串对象作为异常。与Exception
实例不同,字符串没有参数。
字符串异常在1.5中已弃用,并在 2.0 2.6中删除。从那以后,我认为它只是向后兼容性。这不足以引发重大改变。
答案 1 :(得分:4)
历史原因。
回到1.x天,这些信息并没有捆绑在一个对象中。异常类型是字符串(!)而不是类,值是一些任意对象,并且回溯没有附加到这些对象中的任何一个。所有type, value, traceback
API都围绕此设计构建,其中这些对象必须单独传递:
MyException = "MyException"
raise MyException, 3
在1.x行(I think 1.2)中的某个时间,他们添加了基于类的异常,并且在2.x行中有一些时间(我认为2.6,因为2.5 branch代码路径似乎为了只引发警告),删除了字符串异常,但旧功能签名仍然存在。