如何在C++中捕获char*异常

Mut*_*iti 3 c++ exception

我试图在main()中捕获char*类型异常,但程序崩溃时出现以下消息:在抛出'char const*'实例后调用terminate这是代码:

#include <iostream>

int main ()
{
    char myarray[10];
    try
    {
        for (int n=0; n<=10; n++)
        {
            if (n>9)
            throw "Out of range";
            myarray[n]='a';
        }
    }
    catch (char * str)
    {
        std::cout << "Exception: " << str << std::endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

wra*_*ler 12

使用const:

catch (const char * str)
    {
        std::cout << "Exception: " << str << std::endl;
    }
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是正确的答案.字符串文字是`const`,因此需要被捕获.其他答案(关于构造和抛出`std :: exception`或派生类型)是好的风格,但回答一个不同的问题. (5认同)