我遇到了一个我正在处理unicode字符串的问题,我想用标准异常做一些错误报告.标准异常中包含的错误消息不是unicode.
通常已经不是一个问题了我,因为我可以定义非Unicode的错误信息,并有足够的信息,但在这种情况下,我想包括从原始字符串的数据,而这些可能是Unicode.
如何处理异常中的unicode消息?您是否创建了自己的自定义异常类,是否从将它们扩展为unicode的标准异常派生,或者您是否有其他解决此问题的方法(例如规则"不在异常中使用unicode")?
我认为Peter Dimov在Boost错误处理指南中指出的基本原理涵盖了这一点:
不要太担心what()消息.很高兴有一个程序员有机会搞清楚的消息,但是你不太可能在抛出异常时编写一个相关的,用户可理解的错误消息.当然,国际化超出了例外类作者的范围.Peter Dimov提出了一个很好的论据,即正确使用what()字符串作为错误消息格式化表的关键.现在,只要我们能够标准化标准库抛出的异常的()字符串......