Класс StateError
Класс StateError представляет собой ошибку,
которая возникает, когда объект находится
в состоянии, не позволяющем выполнить
запрошенную операцию. В конструктор мы передаем
строку с сообщением об ошибке - она описывает,
почему операция не может быть выполнена.
Класс наследуется от Error, а не от
Exception, поэтому перехватывать его
следует через on StateError.
Обычно эта ошибка выбрасывается методами
коллекций, итераторов и других объектов,
которые требуют определенного внутреннего
состояния перед вызовом.
Синтаксис
StateError(String message)
Пример
Давайте создадим и выбросим ошибку состояния
с помощью ключевого слова throw:
void main()
{
try
{
throw StateError('Object is not initialized');
}
on StateError catch (e)
{
print(e.message);
}
}
Результат выполнения кода:
"Object is not initialized"
Пример
Давайте получим ошибку состояния при попытке прочитать элемент из пустого итератора:
void main()
{
Iterable<int> items = [];
Iterator<int> it = items.iterator;
try
{
print(it.current);
}
on StateError catch (e)
{
print('StateError: ${e.message}');
}
}
Результат выполнения кода:
"StateError: No element"
Пример
Давайте проверим, что ошибка состояния является
экземпляром класса Error, а не
Exception:
void main()
{
StateError err = StateError('Bad state');
print(err is Error);
print(err is Exception);
}
Результат выполнения кода:
true
false