【发布时间】:2011-06-01 22:39:36
【问题描述】:
对于以下程序:
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++ Exception Handling,解决方法是改用const char*。
来自function (const char *) vs. function (char *)的进一步阅读说
“字符串”的类型是
char*', notconst char*'(我认为这是一个 C 讨论...)
Stack Overflow char* vs const char* as a parameter 上的附加阅读告诉我区别。但他们都没有解决我的问题:
- char* 和 string* 似乎都对字符数有限制。我说的对吗?
- 将关键字 const 添加到 char* 如何消除该限制?我认为 const 的唯一目的是设置一个表示“不可修改”的标志。我理解 const char* e 的意思是“指向不可修改的 char 类型的指针”。
解决该错误的方法是使用 const char* e。
即使是 const string* e 也不起作用。 (只是为了测试......)
谁能解释一下?谢谢!
顺便说一句,我在 Ubuntu 上,由 GCC 编译,在 Eclipse 上。
【问题讨论】:
标签: c++