Вообще, исключения ИМХО нужно кидать только при возникновение таких ситуаций, которые невозможно исключить (такой вот каламбур) на этапе отладки. Не смогли открыть файл — исключение, нету соединения по сети — исключение, закончилась память — исключение. Все остальные ошибки отсеиваются на этапе отладки с помощью assert'ов.
Нужно ли кидать исключение в функции getPoint() и т.п.? Нет, нет и ещё раз нет! Если возврат пустой точки — штатная ситуация, то и обрабатываться она должна штатно, именно через if. Если это нештатная ситуация и такого, согласно алгоритму, просто не может быть — значит этого не должно быть, и вы зря тратите ресурсы, проверяя бросать или нет исключение? А затраты могут быть просто огромными: падение производительности в несколько раз. Вы никогда не задумывались почему std::vector::operator[] не бросает out_of_range? Любая нештатная ситуация которую можете создать вы и только вы, как разработчик приложения, и проверяться должна только в вашей отладочной версии программы.
Information
Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Нужно ли кидать исключение в функции getPoint() и т.п.? Нет, нет и ещё раз нет! Если возврат пустой точки — штатная ситуация, то и обрабатываться она должна штатно, именно через if. Если это нештатная ситуация и такого, согласно алгоритму, просто не может быть — значит этого не должно быть, и вы зря тратите ресурсы, проверяя бросать или нет исключение? А затраты могут быть просто огромными: падение производительности в несколько раз. Вы никогда не задумывались почему std::vector::operator[] не бросает out_of_range? Любая нештатная ситуация которую можете создать вы и только вы, как разработчик приложения, и проверяться должна только в вашей отладочной версии программы.