Для следующей программы:
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 *'
В соответствии с С++ Exception Handling решение состоит в использовании const char *.
Дальнейшее чтение из function (const char *) по сравнению с функцией (char *) говорит, что
Тип "String" равен
char*', not
const char * '(это обсуждение в формате C, которое я думаю...)
Дополнительное чтение о переполнении стека char * vs const char * как параметр говорит мне о разнице. Но ни один из них не отвечает на мои вопросы:
- Кажется, что как char *, так и строка * имеют ограничение на количество символов. Правильно ли я?
- Как добавление ключевого слова const в char * устраняет этот предел? Я думал, что единственной целью const является установка флага, который говорит "не поддающийся изменению". Я понимаю, что const char * е означает "указатель, который указывает на немодифицируемый тип char".
Решение этой ошибки заключается в использовании const char * e.
Даже const string * e не работает. (только ради тестирования...)
Может кто-нибудь объяснить, пожалуйста? Спасибо!
Кстати, я на Ubuntu, скомпилированный GCC, на Eclipse.