`try / catch` используется для перехвата и обработки ошибок во время выполнения программы. Также можно использовать блок `finally` для выполнения кода независимо от наличия исключений.
Dart использует объектную модель исключений — можно ловить как `Exception`, так и `Error`, или любые их наследники.
Варианты использования `catch`
`catch (e)` (Object)
Перехватывает любое исключение, объект сохраняется в `e`.
`catch (e, stackTrace)` (StackTrace)
Позволяет получить доступ к стеку вызовов при ошибке.
`on` (typed catch)
Позволяет перехватывать исключения по конкретному типу.
`finally` (cleanup)
Блок кода, который выполняется **всегда** после `try`/`catch`, независимо от ошибок.
Не стоит использовать `catch (e)` без нужды: лучше ловить только ожидаемые исключения через `on ExceptionType`.
Аспект | try/catch | assert |
---|---|---|
Назначение | Обработка ошибок во время выполнения | Проверка условий во время разработки |
Работает в продакшене | Да | Нет (выключается) |
Гибкость | Можно обрабатывать любые исключения | Только проверка условий |