Класс TimeoutException
Класс TimeoutException представляет собой
исключение, которое возникает при превышении
допустимого времени ожидания выполнения
операции. Данный класс наследуется от класса
Exception. Первым параметром конструктор
принимает сообщение об ошибке, вторым -
длительность тайм-аута в формате Duration.
Класс часто используется совместно с методом
timeout для ограничения времени выполнения
асинхронных операций.
Синтаксис
TimeoutException(String message, [Duration? duration])
Пример
Давайте создадим исключение TimeoutException
с сообщением об ошибке и выведем его на экран:
void main()
{
try
{
throw TimeoutException('Operation timed out');
}
on TimeoutException catch (e)
{
print(e.message);
}
}
Результат выполнения кода:
"Operation timed out"
Пример
Давайте создадим исключение TimeoutException
с указанием длительности тайм-аута и выведем
его на экран:
void main()
{
try
{
throw TimeoutException('Timeout', Duration(seconds: 5));
}
on TimeoutException catch (e)
{
print(e.message);
print(e.duration);
}
}
Результат выполнения кода:
"Timeout"
0:00:05.000000
Пример
Давайте используем метод timeout для
ограничения времени выполнения асинхронной
операции и обработаем исключение
TimeoutException:
Future<String> fetchData()
{
return Future.delayed(Duration(seconds: 3), () => 'abcde');
}
void main() async
{
try
{
String res = await fetchData().timeout(Duration(seconds: 1));
print(res);
}
on TimeoutException catch (e)
{
print('Caught: ${e.message}');
}
}
Результат выполнения кода:
"Caught: Future not completed"