C ++异常 - 抛出一个字符串

时间:2014-11-27 21:40:28

标签: c++ exception exception-handling error-handling

我的代码存在一个小问题。出于某种原因,当我尝试使用下面的代码抛出一个字符串时,我在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;
    }
}

错误:

error

链接:http://i.imgur.com/pYAXLuU.png

2 个答案:

答案 0 :(得分:14)

投掷字符串确实是一个坏主意。

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

答案 1 :(得分:12)

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

编辑:错误已通过

解决
throw string("exception ! error");