Реализация обработки исключений | Управление потоком DART

Реализация обработки исключений | Управление потоком DART
Реализация обработки исключений | Управление потоком DART

Привет, если вы на пути изучения Flutter/Dart или вам просто интересно почитать про разработку подписывайтесь на мой канал в telegram, буду рад вас видеть!

Предыдущая статья: Enum |Управление потоком DART

Try and Catch

Проблема

Вы хотите предоставить способ обработки ошибок в приложении.

Решение

Используйте блоки try, catch и finally для обеспечения управления исключениями в Dart. Вот пример того, как обрабатывать исключения в Dart:

void main(){ String name = "Dart"; try{ print ('Name: $name'); // The following line generates a RangeError name.indexOf(name[0], name.length - (name.length+2)); } on RangeError catch (exception) { print ('On Exception: $exception'); } catch (exception) { print ('Catch Exception: $exception'); } finally { print ('Mission completed!'); } }

Обсуждение

Пример кода определяет соответствующие разделы и устанавливает строку для хранения слова “Dart”.

На рисунке 2-6 показано распределение строковой переменной на основе четырех слотов памяти. Для генерации исключения используется метод indexOf с недопустимым диапазоном (т.е. на единицу больше длины строковой переменной). Перемещение за пределы последнего элемента в выделенной строке памяти приведет к возникновению исключения RangeError. Исключение явно указывает на ошибку, которую оно видит, поэтому в примере диапазон, указанный для индекса, недопустим для объявленной переменной.

Рисунок 2-6. Пример обработки исключений
Рисунок 2-6. Пример обработки исключений

Блок try используется для нормальной обработки кода. Блок кода будет продолжать выполняться до тех пор, пока событие не укажет на то, что происходит что-то ненормальное. Обычно вы помещаете свой код в блок try для перехвата исключений.

Блок on используется для обработки определенного типа возникающего исключения. В примере ожидается возникновение ошибки RangeError. Если вы хотите обработать генерируемое исключение определенного типа, используйте ключевое слово on в вашем блоке исключений.

Блок catch используется для обработки общей обработки при возникновении ненормального события. Использование блока catch предоставляет возможность безопасно восстановить или обработать произошедшее событие. В большинстве ситуаций вы, возможно, не сможете определить тип исключения, генерируемого до события. Используйте блок catch, чтобы позволить вашему коду корректно реагировать при возникновении ошибки.

Блок finally используется для выполнения действия, которое должно выполняться независимо от того, успешно выполнен код или генерирует исключение. Как правило, блок finally используется для очистки, например, для закрытия любых открытых файлов и т.д. Кроме того, он выведет сообщение, указывающее, что обработка завершена независимо от возникновения исключения.

Управление исключениями, безусловно, является типом потока управления, хотя и не в традиционном смысле. Добавление управления исключениями будет становиться все более важным для вашего приложения по мере его усложнения.

Начать дискуссию