#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
作为输出。我是否误解了异常是如何工作的还是存在其他问题?
答案 0 :(得分:3)
这是因为你抛出一个字符串文字,它不能绑定到char*
。相反,它可以绑定到char const*
。
但是,"num is not 0!"
的类型char const[14]
是throw
,{{1}}表达式the array decays to a pointer中的第一个元素。{/ p>