C++ 是否定义了标准库异常引发的消息?
如果请求的值不在容器的范围内,C++ 是否定义了标准库异常引发的消息?,c++,exception,c++-standard-library,C++,Exception,C++ Standard Library,如果请求的值不在容器的范围内,std::vector::at将抛出一个std::out\u of \u range std::out\u of_range的构造函数需要一个字符串,捕获异常时可以通过.what()访问该字符串 但是我从来没有看到过任何关于这条信息中应该包含什么的文字。至少有两个原因有助于了解这一点: 我可能希望向用户显示此消息,例如在启用调试选项的情况下运行时。然后最好知道长度、语言、字符集等是否有任何限制 如果与标准容器足够相似,我可能希望在自己的类中使用std::out\u
std::vector::at
将抛出一个std::out\u of \u range
std::out\u of_range
的构造函数需要一个字符串,捕获异常时可以通过.what()
访问该字符串
但是我从来没有看到过任何关于这条信息中应该包含什么的文字。至少有两个原因有助于了解这一点:
- 我可能希望向用户显示此消息,例如在启用调试选项的情况下运行时。然后最好知道长度、语言、字符集等是否有任何限制
- 如果与标准容器足够相似,我可能希望在自己的类中使用
,并返回与标准库中使用的格式一致的消息std::out\u of_range
除非您自己创建了异常文本,否则不应向用户显示异常文本。它几乎肯定不是英语ASCII以外的任何东西,但更重要的是,它在99%的情况下对用户都没有用处。您应该捕获异常并向用户显示一些实际有用的内容,例如“您的名字不适合我们80年代风格的数据库,因此我们为您对它进行了修改。您的名字现在是${name}。欢迎。”@JohnZwinck如果您可以将其作为答案,这样就可以添加适当的引用,并进行相应的投票,那就太好了。你似乎肯定知道这一点,但很多人“知道”的事情可能是真的,也可能不是真的。