c ++中的异常没有显示投掷到cout

时间:2018-02-21 18:16:43

标签: c++ macos exception terminal throw

#include <iostream>

int main()
{
int num = 1;

try
{
    if (num != 0)
    {
        throw "num is not 0!";
    }
}
catch (char *x)
{
    cout << x << endl;
}
}

我希望此代码打印“num is not 0!”但是当我运行它时,我从终端获得libc++abi.dylib: terminating with uncaught exception of type char const* Abort trap: 6作为输出。我是否误解了异常是如何工作的还是存在其他问题?

1 个答案:

答案 0 :(得分:3)

这是因为你抛出一个字符串文字,它不能绑定到char*。相反,它可以绑定到char const*

但是,"num is not 0!"的类型char const[14]throw,{{1}}表达式the array decays to a pointer中的第一个元素。{/ p>