logo

try / catch

dart

core

`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 vs assert

Аспектtry/catchassert
НазначениеОбработка ошибок во время выполненияПроверка условий во время разработки
Работает в продакшенеДаНет (выключается)
ГибкостьМожно обрабатывать любые исключенияТолько проверка условий