Python异常的正确打印方法是什么?

9
        except ImportError as xcpt:
            print "Import Error: " + xcpt.message

在Python 2.6中,使用message会得到一个弃用警告,因为该属性即将被删除。 Stackoverflow

那么你应该如何处理ImportError?(注意,这是一种内置异常,而不是我自己定义的...)

2个回答

9
正确的方法是:
xcpt.args

只有 message 属性即将消失,异常仍将存在并继续具有参数。

阅读此文:http://www.python.org/dev/peps/pep-0352/,其中解释了移除 messages 属性的一些理由。


2

如果您想打印异常:

print "Couldn't import foo.bar.baz: %s" % xcpt

异常类定义了__str__方法用于创建一个可读的异常版本。不需要使用"Import Error:",因为异常会自己提供此信息。如果您要向异常添加文本,请确保该文本基于您尝试执行的代码。


当我运行print xcpt时,我得到了"No module named tribes.models"的输出,虽然异常类型在消息中是隐含的,但却没有明确给出。 - boatcoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接