Форум программистов, компьютерный форум CyberForum.ru

Уведомление об ошибке в функции... - C++

Восстановить пароль Регистрация
 
AKE
11 / 11 / 0
Регистрация: 09.05.2010
Сообщений: 384
03.08.2010, 13:51     Уведомление об ошибке в функции... #1
Есть функция которая в процессе выполнения получает значение t, если (t < 0) значения нет. Как уведомить об этом пользователя функции? Если сделать доп. функцию проверки, то вычисления будут проводится дважды...

C++
1
2
3
4
5
6
T3DPoint Ray_And_Plane_Intersection(TRay Ray, TPlane Plane)
{
 float t = (-Plane.A*Ray.StartPoint.X-Plane.B*Ray.StartPoint.Y-Plane.C*Ray.StartPoint.Z-Plane.D)/(Ray.Direction.X*Plane.A + Ray.Direction.Y*Plane.B + Ray.Direction.Z*Plane.C);
 if (t < 0)
  ...
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
03.08.2010, 13:53     Уведомление об ошибке в функции... #2
Стандартный способ - возбуждать исключение в функции.
AKE
11 / 11 / 0
Регистрация: 09.05.2010
Сообщений: 384
03.08.2010, 13:55  [ТС]     Уведомление об ошибке в функции... #3
CheshireCat, а можно пример, пожалуйста?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
03.08.2010, 14:08     Уведомление об ошибке в функции... #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdexcept>
//...
T3DPoint Ray_And_Plane_Intersection(TRay Ray, TPlane Plane)
{
 float t = (-Plane.A*Ray.StartPoint.X-Plane.B*Ray.StartPoint.Y-Plane.C*Ray.StartPoint.Z-Plane.D)/(Ray.Direction.X*Plane.A + Ray.Direction.Y*Plane.B + Ray.Direction.Z*Plane.C);
 if (t < 0)
  throw(std::runtime_error("Error: float t is negative")); //Наше исключение
//...Дальнейший код
}
 
int main()
{
    try
    {
    //...Код, который может возбуждать исключения
    // в том числе и вызов нашей функции
    }
    catch(std::exception& e)
    {
         std::cerr << e.what() << std::endl;
         return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}
AKE
11 / 11 / 0
Регистрация: 09.05.2010
Сообщений: 384
03.08.2010, 14:44  [ТС]     Уведомление об ошибке в функции... #5
Nameless One, спасибо
Yandex
Объявления
03.08.2010, 14:44     Уведомление об ошибке в функции...
Ответ Создать тему
Опции темы

Текущее время: 14:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru