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

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

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

Ошибка объединения сервисов

Существуют продукты, предоставляющие библиотеки для перехвата неперехваченных исключений и сообщения о них обратно в службу агрегирования ошибок. Одним из примеров является продукт New Relic Browser, в котором мне посчастливилось быть техническим руководителем от концепции до GA. New Relic Browser был особенно полезен тем, что он не только перехватывал и сообщал об исключениях, возникающих в браузерах, но также хорошо коррелировал ошибки между поставщиками и версиями браузеров. Как разработчик, вы тогда обладали обширными знаниями, которые помогли вам определить, какие ошибки возникают чаще всего и как их исправить.

Проблема создания бессерверных отчетов об ошибках

Сервисы агрегации ошибок приносят разработчикам огромную пользу. Но бессерверные функции представляют собой проблему. Почти все службы агрегации ошибок будут обнаруживать ошибки и помещать их в очередь для периодического сообщения. Например, агенты New Relic Application Monitoring собирают ошибки и сообщают о них раз в минуту. Напротив, многие бессерверные функции запрограммированы так, что при возникновении ошибки они никогда не будут запускаться снова, потому что их место может занять новый экземпляр функции. Задержка сообщения об ошибках предотвратит сообщение об ошибках вообще.

Стекери спешит на помощь!

В Stackery мы осознаем важность правильной обработки ошибок. Должен быть способ агрегировать ошибки от бессерверных функций и, надеюсь, таким образом, чтобы обеспечить гибкую обработку экземпляров ошибок. Именно поэтому мы построили Узел ошибок. По мере выполнения функций все ошибочные состояния, включая тайм-ауты, перехватываются Stackery. Когда ошибка возникает из-за синхронного вызова из другой функции, вызвавшая ошибку функция ответит соответствующим объектом ошибки. Кроме того, если в стеке существует узел Errors, все ошибки будут выдаваться из узла Errors.

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

В Stackery мы всегда работаем над тем, чтобы помочь нашим клиентам создавать лучшие приложения. Мы надеемся, что наши функции обработки ошибок помогут вам сократить среднее время решения проблем в ваших приложениях. Следите за обновлениями, чтобы в ближайшем будущем интеграция с сервисами сбора ошибок стала еще проще!