Получить индекс элемента массива, который вызвал исключение

Имеется: класс 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). Можно сделать исключение не в методе получения длины, а в методе вывода массива и бросать из него индекс, но это будет как-то не правильно. Так вот есть ли какой способ который даст мне номер элемента, который вызвал исключение?


Ответы (0 шт):