пост pzrq говорит, что использовать:
str(e)
Это было именно то, что мне было нужно.
(Если вы находитесь в среде Unicode, кажется, что:
unicode(e)
будет работать, и, кажется, работает нормально в среде не-Unicode)
Пзрк сказал много других хороших вещей, но я почти пропустил их ответ из-за всех хороших вещей. Поскольку у меня нет 50 баллов, я не могу прокомментировать их ответ, чтобы попытаться привлечь внимание к простому работающему решению, и, поскольку у меня нет 15 баллов, я не могу проголосовать за этот ответ, но я могу опубликовать (чувствует себя отсталым, но да ладно) - так вот я и выкладываю - наверно теряю очки за это ...
Так как моя цель - привлечь внимание к ответу pzrq, пожалуйста, не застекляйте и не пропустите его во всем нижеприведенном. первые несколько строк этого поста являются наиболее важными.
Моя история:
Проблема, ради которой я пришел сюда, заключалась в том, что если вы хотите поймать исключение из класса, который вы не можете контролировать - что тогда ??? Я, конечно, не собираюсь создавать подклассы для всех возможных классов, которые использует мой код, чтобы попытаться получить сообщение из всех возможных исключений!
Я использовал:
except Exception as e:
print '%s (%s)' % (e.message,type(e))
который, как мы все теперь знаем, дает предупреждение, о котором спрашивал OP (что привело меня сюда), и это, которое pzrq дает как способ сделать это:
except Exception as e:
print '%s (%s)' % (str(e),type(e))
не.
Я не нахожусь в среде Юникода, но ответ JJC заставил меня задуматься, поэтому я должен был попробовать. В этом контексте это становится:
except Exception as e:
print '%s (%s)' % (unicode(e),type(e))
который, к моему удивлению, работал точно так же, как str (e) - так что теперь это то, что я использую.
Не знаю, является ли 'str (e) / unicode (e)' 'одобренным способом Python', и я, вероятно, выясню, почему это не очень хорошо, когда я доберусь до 3.0, но можно надеяться, что способность обрабатывать Неожиданное исключение (*) без смерти и получения информации от него никогда не исчезнет ...
(*) Хм. «неожиданное исключение» - думаю, я просто заикался!