У меня очень трудное время, чтобы понять обработку исключений после просмотра онлайн-уроков и чтения на нем. Я пытаюсь пройти тестовое развитие, и я не могу. То, что я придумал до сих пор, это. Я должен использовать эту структуруИмея трудное понимание времени обработки исключений C++
struct ArrayException
{
ArrayException(string newMessage = "error") :message(newMessage)
{
}
string message;
};
Первая попытка.
int sum(int* theArray, unsigned int arraySize)
{
try
{
if (theArray = NULL)
{
throw ArrayException("NULL ARRAY REFERENCE");
}
}
catch (int* param)
{
cout << "you can't have " << param << " as an array size";
}
int sum = 0;
for (int i = 1; i < arraySize; i++)
{
sum += theArray[i];
}
return sum;
}
Я также пробовал делать это таким образом.
int sum(int* theArray, unsigned int arraySize)
{
if (theArray = NULL)
{
throw ArrayException("NULL ARRAY REFERENCE");
}
else
{
int sum = 0;
for (int i = 1; i < arraySize; i++)
{
sum += theArray[i];
}
return sum;
}
}
Проблемы в том, что вы являетесь catch 'int *' вместо ArrayException, кстати гораздо лучше, если класс исключения наследуется от std :: exception, чтобы иметь базовые функциональные возможности исключения. – NetVipeC
@NetVipeC, нет, не из-за этого (в них мало функциональности). Это лучше, потому что таким образом исключение может быть уловлено ссылкой на эти базовые типы, и приложения должны иметь улов для них по умолчанию. – SergeyA
Пожалуйста, не пытайтесь выучить C++ из видеоуроков. Это худший путь. Пойдите, прочитав хорошую книгу, и оставьте ее за своим столом в качестве справочной информации, которую вы можете возвращать каждый раз, когда вам нужно. –