169 похожих чатов

Всем привет. Вопрос про обработку исключений. В своем проекте мы

приняли решение не траить исключения в нижних слоях (работа с сетью, разбор json, и т.д.), а ловить на самом верху, например в обработчиках кнопок виджетов. Но тогда вопрос - как логгировать перехваченные исключения? Было бы идеально переопределить catch(e,s), но я пока так не умею. Пока на ум приходит только что-то вроде:
try {
await context.read<MyFuckModel>().doSomething();
} catch(e, s) {
myCatchProxy(e, s, () {
showSnackBar(e.toString());
});
}
Как-то кривовато выглядит, как бы это красиво и правильно сделать? Может есть стандартное решение?

22 ответов

10 просмотров

если делать через блок, то у него есть BlocObserver, куда все ошибки будут сыпаться

Я бы ловил внутри метода

Юджин Флаттер- Автор вопроса
Kirill Fokin
если делать через блок, то у него есть BlocObserve...

Проехал. Очень неудобно ловить результаты обработчиков кнопок в BlockListener. Проще прямо в обработчике кнопки получить результат, мимо блока.

ManBearPig
Я бы ловил внутри метода

они хотят сделать так, чтобы не писать в каждом методе try catch, но чтобы все ошибки обрабатывались

Юджин Флаттер- Автор вопроса
Kirill Fokin
я не про BlocListener

А как иначе снэкбар показать ?

ManBearPig
Где реализуем там и ловим же

ну и получится копипаста, когда в каждом методе try catch который делает одно и тоже (логгирует или что-то еще)

Юджин Флаттер
А как иначе снэкбар показать ?

вопрос был про логгирование ошибок, а тут ты уже на ui перешел

ты можешь ловить разные типы на разных уровнях. Как вариант

Юджин Флаттер- Автор вопроса
Kirill Fokin
вопрос был про логгирование ошибок, а тут ты уже н...

Так я перехватываю ошибку уже в виджете, и вывожу ее пользователю. И в этот момент надо логировать.

Логировать не в UI слое нужно

Юджин Флаттер- Автор вопроса
Daniil Koliasnikov
Логировать не в UI слое нужно

Но тогда нужно траить ошибку по месту ее возникновения. А именно этого и не хочется, ибо таких мест слишком много...

Юджин Флаттер
Но тогда нужно траить ошибку по месту ее возникнов...

а почему в блоке нельзя ошибку ловить и обрабатывать?

Юджин Флаттер
Но тогда нужно траить ошибку по месту ее возникнов...

runZoned, BlocOverrides - способы отловить все ошибки в одном месте

Юджин Флаттер- Автор вопроса
Timur M.
а почему в блоке нельзя ошибку ловить и обрабатыва...

Можно, но потом нужно передать ее в виджет, чтоб снэкбаром показать. Для этого нужно модифицировать стейт. А стейтов много. Значит их все нужно наследовать от общего предка, у которого поле ошибки есть. И понеслась...

Юджин Флаттер
Но тогда нужно траить ошибку по месту ее возникнов...

@freezed class Eather<T> with _$Eather<T> { const factory Eather.success({@required T? data}) = Success<T>; const factory Eather.failure({@required Exceptions? error}) = Failure<T>; }

Юджин Флаттер- Автор вопроса
ManBearPig
@freezed class Eather<T> with _$Eather<T> { cons...

Черт, спасибо! ))). Идея хорошая, но так радикально... Надо подумать... Хотя все равно рано или поздно составные типы в проект придется затягивать )

Юджин Флаттер
Можно, но потом нужно передать ее в виджет, чтоб с...

внутри блока можно этот метод переопределить

Юджин Флаттер- Автор вопроса

:))

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
22
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
а не подскажете вот это скрин из какой IDE ?
Iluha Companets
14
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Сегодня у себя обнаружил Holodeck-2_8_0.exe (48.5 Mb). Вопрос: откуда он у меня взялся?
楽園松本
8
Народ всем привет Подскажите, как включить самописные dll библиотеки в итоговую сборку Сейчас при запуске dev сервера локально формируется папка build, из которой запускается...
Андрей
4
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Карта сайта