C 异常 - 抛出一个字符串

新手上路,请多包涵

我的代码有一个小问题。出于某种原因,当我尝试使用下面的代码抛出一个字符串时,我在 Visual Studio 中得到一个错误。

 #include <string>
#include <iostream>
using namespace std;

int main()
{

    char input;

    cout << "\n\nWould you like to input? (y/n): ";
    cin >> input;
    input = tolower(input);

    try
    {
        if (input != 'y')
        {
            throw ("exception ! error");
        }
    }
    catch (string e)
    {
        cout << e << endl;
    }
}

错误 :

错误

原文由 Jimmy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 450
2 个回答

您目前正在抛出 const char* 而不是 std::string ,而是应该抛出 string("error")

编辑:错误已解决

throw string("exception ! error");

原文由 Syntactic Fructose 发布,翻译遵循 CC BY-SA 4.0 许可协议

扔一个字符串真的是个坏主意。

随意定义一个自定义异常类,并在其中嵌入一个字符串(或者只是从 std::runtime_error 派生您的自定义异常类,将错误消息传递给构造函数,并使用 what() 在捕获站点获取错误字符串的方法),但 不要 抛出字符串!

原文由 Mr.C64 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题