擅长:python、mysql、java
<p>确保您可以在错误消息中看到结果的一种方法是使用<code>repr</code>,或者更直接地使用<code>%r</code>,而不是{<cd3>}:这永远不会失败(因为任何对象都有一个表示,并且所有表示都是ASCII格式,包括可能的转义序列),并且还显示(作为转义序列)可能不可见的字符。在</p>
<p><code>repr</code>(和老式格式字符串中的<code>'%r'</code>)委托给对象类型的<code>__repr__</code>特殊方法;每个对象类型负责知道如何在一个明确(不一定是超级可读)的ASCII字符串中最好地表示自己。字符串和字节序列尤其擅长于此,因此<code>repr</code>非常适合它们。在</p>
<p>OP已经做到了,但不喜欢结果的美观性(在<code>err.message</code>的<code>repr</code>和{<cd11>}的<code>repr</code>之间变化)。不幸的是,美学是<code>repr</code>最不重要的优先事项:相反,它都是关于完整、明确的信息。在</p>
<p>另一个想法是用一个永不失败的编码(一个解码每个字节,尽管可能是一个无意义的上下文字形),如“iso-8859-1”。但我相信,它并没有比<code>repr</code>有实质性的改进;美学上的改进是相当值得商榷的,而且在“完整、明确的信息”方面存在丢失的可能性。在</p>