int DivZero(int, int, int);
int main()
{
try {
cout << DivZero(1,0,2) << endl;
}
catch(char* e)
{
cout << "Exception is thrown!" << endl;
cout << e << endl;
return 1;
}
return 0;
}
int DivZero(int a, int b, int c)
{
if( a <= 0 || b <= 0 || c <= 0)
throw "All parameters must be greater than 0.";
return b/c + a;
}
使用char* e会导致
抛出实例为'char const *'的异常后终止
根据C++异常处理,解决方案是使用const char*。
进一步阅读函数(const char*) vs. 函数(char*)指出:
"String"的类型是
char*',而不是
const char*'(我觉得这是一次C讨论...)
Stack Overflow上的附加阅读char*和const char*作为参数告诉我它们的区别。但是它们都没有回答我的问题:
- 似乎char*和string*都有字符数限制。我对吗?
- 将关键字const添加到char*中如何消除该限制?我认为const的唯一目的是设置一个标志,表示“不可修改”。我理解const char* e的含义是“指向不可修改char类型的指针”。
解决该错误的方法是使用const char* e。
即使是const string* e也不起作用。(仅为测试而言...)有人能解释一下吗?谢谢!
顺便说一句,我在Ubuntu上,用GCC编译,在Eclipse上工作。
char* s =“String”;
而不会出错。另一方面,有些编译器可能会给出警告...(演示) - ildjarn