pzrq 的帖子说要使用:
str(e)
这正是我所需要的。
(如果您处于 unicode 环境中,则显示为:
unicode(e)
会工作,而且它似乎在非 unicode 环境中工作正常)
Pzrq 说了很多其他的好东西,但由于所有的好东西,我几乎错过了他们的答案。由于我没有 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))
没有。
我不在 unicode 环境中,但是 jjc 的回答让我感到好奇,所以我不得不尝试一下。在这种情况下,这变成:
except Exception as e:
print '%s (%s)' % (unicode(e),type(e))
令我惊讶的是,它的工作方式与 str(e) 完全一样 - 所以现在这就是我正在使用的。
不知道 'str(e)/unicode(e)' 是否是 'approved Python way',当我到 3.0 时我可能会发现为什么这不好,但希望能够处理意外的异常 (*) 没有死亡,仍然从中获得一些信息,永远不会消失......
(*) 唔。“意外异常” - 我想我只是结结巴巴!