Нет, не стоит. Правильное поведение должно сигнализировать о том, что возникла потенциальная проблема параллелизма, однако это делается на выбранном вами языке (выбросить исключение, вернуть код ошибки, повысить () сигнал).
Если вы изменяете структуру данных во время итерации по ее элементам, итератор может перестать быть допустимым, что означает, что вы рискуете работать с объектами, которые больше не являются частью коллекции. Если вы хотите фильтровать элементы на основе более сложной нотации, вы можете сделать что-то вроде этого (в Java):
List<T> toFilter = ...;
List<T> shadow;
for ( T element : toFilter )
if ( keep(element) )
shadow.add(element);
/* If you'll work with toFilter in the same context as the filter */
toFilter = shadow;
/* Alternatively, if you want to modify toFilter in place, for instance if it's
* been given as a method parameter
*/
toFilter.clear();
toFilter.addAll(shadow);