gpt4 book ai didi

c++ - std::exception::what() 的目的是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:16 24 4
gpt4 key购买 nike

我只能想到以下几种使用std::exception::what()的情况:

  1. 用于调试目的。在我的 Visual Studio 中看到 e.what() 我必须手动将它添加到监视列表中。有一个成员 std::string (这样调试器直接在对象检查器中显示它)并且只将它包含在非 NDEBUG 构建中不是更好吗?至少他们应该在 NDEBUG 构建中禁用 what()。
  2. 输出它,例如MessageBox(e.what())cout << e.what() .据我所知,这些消息对许多用户来说毫无用处。例如,当我尝试重命名一个不存在的文件时:

    boost::filesystem::rename: 系统找不到指定的文件。: "D:\MyDesktop\4", "D:\MyDesktop\5"

    (中文意思是“系统找不到指定的文件。”)用户如何解密这些混杂的东西?此外,它是一个 const char*而不是像 const platform_char* 这样的东西,在 Windows 中可能存在 unicode 问题。

  3. 从中提取数据,例如std::regex_match(e.what()...) .我认为这是一个显示设计缺陷的糟糕想法。

那么我应该在哪里使用 std::exception::what() 呢?没用吗?

最佳答案

程序员应该从std::exception 和taylor what() 中派生出一个类来满足特定的需求。那么它就会非常有用。

报告一些东西也很有用(例如,以纯文本形式进行日志记录),这就是为什么标准要求具体的std::exception::what()而不是纯虚函数。

关于c++ - std::exception::what() 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20497601/

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