Вы когда-нибудь писали код, а потом не получали ожидаемых результатов? Вы смотрите на код 10 раз и думаете, что-то не так, и это не моя логика? И в большинстве случаев это ваша логика. Ну не в этот раз, по крайней мере вроде.

Большинство из нас подумает, что оператор return в приведенном выше методе должен вернуть управление вызывающему методу, но в этом случае он просто выйдет из оператора if, и цикл for each перейдет к следующей итерации.

Почему оператор return внутри for-each не работает?

Если мы разберем цикл for-each, то увидим, что каждый элемент отправляется в функцию обратного вызова. Таким образом, функция обратного вызова возвращает значение, но для каждого. И for-each продолжает перемещаться по остальной части списка.

Как я могу выйти из этой петли?

Есть только один способ использовать цикл for вместо цикла for each. Чтобы решить эту проблему, я попытался создать это пользовательское исключение.

Но вы можете видеть ниже, что IDE не позволяет мне это сделать.

Опция try/catch не решит наш вариант использования, потому что мы останемся только в этом цикле. Поэтому нам нужно заменить его только циклом.

Приведенный выше фрагмент будет работать и служить той же цели.

Таким образом, for-each — отличный метод для использования, но мой старый друг, цикл for, никуда не денется еще долгое время.