gpt4 book ai didi

c++ - 是否定义了标准库异常抛出的消息?

转载 作者:搜寻专家 更新时间:2023-10-31 02:04:31 24 4
gpt4 key购买 nike

std::vector::at 如果请求的值不在容器范围内,则抛出 std::out_of_range

std::out_of_range的构造函数需要一个字符串,捕获异常时可以通过.what()访问。

但我从未见过任何关于该消息中实际必须包含的内容的文字。至少出于两个原因,了解这一点可能很有用:

  • 我可能想向用户显示此消息,例如在启用调试选项的情况下运行时。然后最好知道在长度、语言、字符集等方面是否有任何限制。
  • 如果它与标准容器足够相似,我可能想在我自己的类中使用 std::out_of_range,并返回符合标准库中使用的格式的消息。

这是在标准中定义的吗?如果没有,是否定义为被定义?

最佳答案

我搜索了 n4659(早期的 c++17 草案)。

当标准库抛出时,根本没有对用于初始化这些异常的字符串的引用。

我没有看到字符串可以打印的保证,尽管我怀疑在所有实现中它们都是:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf

关于c++ - 是否定义了标准库异常抛出的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53350716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com