问题:
使用
%s
格式化消息时为什么没有异常信息,而使用format
时却有异常信息?
失败的情况:
>>> Exception('foo %s', 'bar').message
''
工作内容:
>>> Exception('foo {}'.format('bar')).message
'foo bar'
为什么在%s
上失败了,有任何解释吗?
message
属性已被弃用,较新版本的 Python 已经没有它了。使用str(Exception(...))
就可以获取消息了。此外,在 Python2 中似乎甚至没有记录message
,与args
相反。我认为只有在构造函数中提供单个参数时才会设置message
,否则意味着异常包含其他数据在args
中,基本实现并不假设您想将所有内容格式化为消息... - Bakuriu>>> asdf = Exception('foo %s' % 'bar')
然后跟着>>> asdf.message
这个在Python 2.7中可行。但是在Python3中已经完全删除了。 - Dartmouth