我的代码存在一个小问题。出于某种原因,当我尝试使用下面的代码抛出一个字符串时,我在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;
}
}
错误:
答案 0 :(得分:14)
投掷字符串确实是一个坏主意。
随意定义一个自定义异常类,并在其中嵌入一个字符串(或者只是从std::runtime_error
派生自定义异常类,将错误消息传递给构造函数,并使用what()
方法在catch-site获取错误字符串),但不抛出一个字符串!
答案 1 :(得分:12)
您目前正在投掷const char*
而不是std::string
,而应投掷string("error")
编辑:错误已通过
解决throw string("exception ! error");