Naturalist> До ближайшего перехватчика, который не имеет в конце обработки throw.
Не-а. Это идёт до этого, потом оно перевбрасывается. Но остановка на минимальную обрабоку уже была.
Naturalist> Опять таки, если в рекурсивной функции делать throw по условию, то все будет как ты хочешь.
Ну и сделай мне выход из рекурсии любой глубины на 10 уровней ровно всегда. Или по переменной. И увидишь разницу. Тебе придётся тянуть назад и проверять, а на сколько уровней я уже вышел.
Naturalist> Другое дело, я не припомню, чтобы мне такое хоть раз было нужно. Обычно везде работает if(...) return;
Да элементарно, Ватсон. Возми сложные обходы деревьев, где некоторые свойства дерева позволяют вернуться сразу на несколько уровней наверх, т.к. известно условие, что, если предикат выполнен в листочке, то поддерево уровня N не содержит больше листков с нужными аттрибутами.
Naturalist> Если жалко вызова, можно сделать inline функцию, которая сделает "return 3 up" "чисто".
Naturalist> Сидя в фунции, ты никогда не знаешь, что там наверху по стеку. Да и зачем? Смысл функции пропадает.
Нет, не пропадает. Блин, ты не понимаешь. Не просто 3. А вот по условию один, вернулись назад на 1, а по условию 2 вернулись назад на 10.