Как бороться с ошибками в производстве и держать пользователей на стороне

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

В этом посте мы говорим о том, что делать поверх регулярной обработки ошибок - в крайнем случае.

Ионные и необработанные ошибки

Обработка производственных ошибок Ionic отсутствует. Необработанное исключение или отклонение обещания в вашем JS-коде оставляет ваше приложение в неопределенном состоянии. Это может выглядеть нормально, но ваши пользователи будут сталкиваться с очень странным поведением и ошибками, которые просто не имеют смысла.

Реализуйте ErrorHandler

Лучший способ реализовать крайнюю обработку ошибок в Ionic и Angular - это реализовать собственный класс ErrorHandler.

Angular будет автоматически вызывать handleError при возникновении исключения.

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

Что нам делать?

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

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

Войти в стороннюю службу

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

В этом примере мы собираемся войти в Rollbar *, но есть много других доступных сервисов. Вы даже можете написать свой собственный.

Угловая дуга

В этом примере мы будем использовать angular-rollbar, чтобы упростить процесс. Сначала мы добавим модуль в наш проект:

Далее мы настроим RollbarService, который будет вставлен в наш ErrorHandler, и запишем ошибку.

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

Заключение

Теперь мы можем обнаруживать необработанные ошибки в производственной среде, регистрировать их в сторонней службе и уведомлять пользователя о том, что что-то пошло не так. Приложение перезапустится и никогда не останется в неопределенном состоянии. Это последнее средство, которое должно дополнять правильную, детальную обработку ошибок, но абсолютно необходимо для производственных приложений.

* У меня нет личных интересов или отношений с Rollbar, но мы время от времени пользуемся их услугами.

Первоначально опубликовано на www.nextfaze.com.