Другой способ еще не дан:
try:
1/0
except Exception, e:
print e.message
Вывод:
integer division or modulo by zero
args[0]
может фактически не быть сообщением.
str(e)
может возвращать строку с окружающими кавычками и, возможно, с начальным u
, если Unicode:
'integer division or modulo by zero'
repr(e)
дает полное представление исключения, которое, вероятно, не то, что вы хотите:
"ZeroDivisionError('integer division or modulo by zero',)"
edit
Мой плохой !!!Похоже, что BaseException.message
устарело с 2.6
, наконец, определенно кажется, что до сих пор не существует стандартизированного способа отображения сообщений об исключениях.Поэтому я думаю, что лучше всего разобраться с e.args
и str(e)
в зависимости от ваших потребностей (и, возможно, с e.message
, если используемая вами библиотека полагается на этот механизм).
Например, сpygraphviz
, e.message
- единственный способ правильно отобразить исключение, использование str(e)
окружит сообщение u''
.
Но с MySQLdb
правильный способ получить сообщение:e.args[1]
: e.message
пусто, а str(e)
отобразит '(ERR_CODE, "ERR_MSG")'