Бросить исключение, когда найден результат поиска - PullRequest
4 голосов
/ 26 октября 2011

Я недавно прочитал в книге BS c ++, что можно бросить результат рекурсивного поиска, чтобы сразу же вернуться из всего стека вызовов.Это нормально делать то же самое в Java?Я знаю, что это возможно, но не рекомендуется ли это иметь неприятный запах?Это проще, чем использовать флаг 'found' и проверять его каждый раз.

Ответы [ 3 ]

3 голосов
/ 26 октября 2011

Я бы определенно пошел за флаг.Конечно, вы можете сделать это с Exception, но это не предназначено для управления потоком кода с исключениями.Исключения не бесплатны, в то время как простая проверка флага обойдется в O (1).

2 голосов
/ 26 октября 2011

Флаг действительно был бы лучшим вариантом.

Исключения следует использовать только для этого, обработки неожиданного поведения, а не для управления рабочим процессом вашей программы.Имейте в виду, что генерирование исключения заставит все вызывающие методы обрабатывать его явно, и это сделает ваш код много более связанным, чем это необходимо.

1 голос
/ 26 октября 2011

Вы обязательно должны использовать флаг.Исключения предназначены для использования в исключительных условиях .Они не должны быть кодами возврата.Кроме того, создание исключений сопряжено с довольно значительными затратами, а проверка флага - очень быстрая операция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...