Получить индекс элемента массива, который вызвал исключение
Имеется: класс Vector2d описывающий вектор в двумерном пространстве; класс VectorArray, который является массивом объектов Vector2d. Vector2d имеет метод считающий и возвращающий длину вектора
double a = abs(sqrt(pow((two.getX() - one.getX()), 2) + pow((two.getY() - one.getY()), 2)));
return a;
Этот метод используется в методе, который выводит информацию о векторе, этот же метод в свое время используется в методе VectorArray, который выводит весь массив
void printArray(std::ostream& out = std::cout) const
{
for (int i = 0; i < size; i++)
arr[i].printVec();
}
Допустим я хочу чтобы было исключение, когда длина вектора меньше заданной
double a = abs(sqrt(pow((two.getX() - one.getX()), 2) + pow((two.getY() - one.getY()), 2)));
if (a < 50)
throw "Длина вектора меньше 50";
return a;
Я создал массив и заполнил его с помощью метода генерирующего случайные числа. Если найдено исключение, то провести генерацию снова
try
{
vec2d.printArray();
}
catch (const char* ex)
{
std::cout << ex << std::endl;
vec2d.generateValues();
}
Так новыми станут все числа, я же хочу чтобы новым стал элемент на котором вызвалось исключение (есть метод для одного элемента допустим vec2d[i].generateValue). Можно сделать исключение не в методе получения длины, а в методе вывода массива и бросать из него индекс, но это будет как-то не правильно.
Так вот есть ли какой способ который даст мне номер элемента, который вызвал исключение?