РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
451 of 723 menu

Класс ConcurrentModificationError

Класс ConcurrentModificationError представляет собой ошибку, которая возникает, когда коллекция (например, список, множество или словарь) изменяется во время её итерации. Это может произойти, например, если во время цикла for по списку добавить или удалить элемент из этого списка. Класс наследуется от Error и содержит свойство modifiedObject, которое указывает на коллекцию, вызвавшую ошибку.

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

Синтаксис

ConcurrentModificationError([Object? modifiedObject])

Пример

Давайте попробуем удалить элемент из списка во время его перебора в цикле for и посмотрим, какая ошибка возникнет:

void main() { List<String> list = ['a', 'b', 'c', 'd', 'e']; try { for (String item in list) { if (item == 'c') { list.remove(item); } } } catch (e) { print(e); } }

Результат выполнения кода:

"ConcurrentModificationError: Concurrent modification during iteration: Instance(length:4) of '_GrowableList'."

Пример

Давайте перехватим ошибку ConcurrentModificationError с помощью блока on и выведем сообщение:

void main() { List<int> numbers = [1, 2, 3, 4, 5]; try { for (int n in numbers) { if (n == 3) { numbers.add(6); } } } on ConcurrentModificationError catch (e) { print('Error caught: ${e.modifiedObject}'); } }

Результат выполнения кода:

"Error caught: [1, 2, 3, 4, 5, 6]"

Пример

Давайте создадим объект ConcurrentModificationError вручную и выведем его в консоль:

void main() { List<String> list = ['a', 'b', 'c', 'd', 'e']; ConcurrentModificationError error = ConcurrentModificationError(list); print(error); print(error.modifiedObject); }

Результат выполнения кода:

"ConcurrentModificationError: Concurrent modification during iteration: [a, b, c, d, e]." "[a, b, c, d, e]"

Смотрите также

  • ключевое слово throw,
    которое выбрасывает исключение
  • конструкция try,
    которая позволяет перехватывать ошибки
  • конструкция on,
    которая перехватывает ошибки определённого типа
  • класс StateError,
    который представляет ошибку состояния
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить