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)'是否是'认可的Python方式',我很可能会发现为什么当我达到3.0时这不好,但是有人希望能够处理不会死的意外异常(*)永远不会消失...
(*)嗯。“意外异常”-我想我口吃了!