Чтобы эффективно обрабатывать ошибки, важно понимать типы ошибок, которые могут возникнуть. Давайте начнем с классификации ошибок, с которыми вы можете столкнуться.
Могут возникнуть различные типы ошибок. Однако эти ошибки обычно можно разделить на две категории:
Давайте разложим ошибки, которые мы обсудили, на эти классификации.
Ошибки, полученные от серверных API с четкими кодами состояния, можно считать Ожидаемыми ошибками, поскольку их можно предвидеть и устранить заранее.
Например, такие ошибки, как несанкционированный доступ (401) или запрещенный доступ (403), можно обрабатывать соответствующим образом в зависимости от ситуации. Также принято определять более подробные коды ошибок для каждого кода состояния, чтобы управлять логикой приложения в ответ на ошибки. Они называются ожидаемыми ошибками.
С другой стороны, ошибки сервера в диапазоне 500 классифицируются как Неожиданные ошибки, поскольку они непредсказуемы. Ситуации, когда сервер по какой-либо причине не может ответить, могут возникнуть в любое время. Кроме того, ошибки, которые могут возникнуть из-за сетевой среды пользователя или среды браузера, трудно предсказать, поэтому они классифицируются как непредвиденные ошибки.
Ошибки также можно классифицировать на основе взаимодействия с пользователем, а не только на основе среды. Один из способов классифицировать ошибки — рассмотреть, может ли пользователь что-то сделать с ошибкой. Вот критерии этой классификации:
Например, в эту категорию попадают ошибки аутентификации или авторизации. Пользователь, не вошедший в систему, может столкнуться с ошибкой статуса 401. В этом случае вы можете предоставить экран входа в систему или отобразить сообщение о необходимости входа в систему.
Если у пользователя нет разрешения на доступ к определенному экрану, вы можете предложить ему запросить доступ у администратора.
Ни один разработчик продукта не приветствует отказ пользователя. Очень важно предоставить рекомендации пользователям, которые сталкиваются с ошибками, чтобы помочь им преодолеть ситуацию. Например, предоставление кнопки обновления для временных сетевых ошибок или кнопки для возврата к предыдущему экрану при доступе к несуществующей странице.
Однако бывают случаи, когда информирование пользователя об ошибочной ситуации вообще не помогает. Например, если код включает компоненты, которые не работают на устройствах или браузерах с низкими характеристиками, пользователь не сможет ничего с этим поделать. (Возможно, сообщение с предложением использовать другой браузер?)
Оба случая, 1 и 2, предполагают предоставление сообщения. Разница в том, что случай 1 включает в себя какое-то действие или руководство, побуждающее пользователя предпринять действия.
Может ли пользователь устранить возникшую ошибку самостоятельно или нет?
Итак, как нам следует обрабатывать возникающие ошибки? Какой интерфейс приложение должно предоставить пользователю в случае возникновения ошибки? Давайте рассмотрим, как устранять различные типы ошибок в зависимости от их характеристик.
Типичным примером является сетевая ошибка. Это может произойти в любое время в зависимости от сетевой среды пользователя. Самое простое решение — сообщить пользователю, что это «временная ошибка», и дать рекомендации повторить предыдущее действие.
При таких ошибках крайне важно убедиться, что приложение в целом не пострадает. Например, если приложение вызывает 10 API на одном экране, сбой одного из них не должен вызывать появление сообщения об ошибке во всем приложении и требовать повторной попытки всех вызовов.
Вместо этого сосредоточьтесь на восстановлении только той области, в которой произошел сбой.
Это ошибки, которые трудно предвидеть и которые не имеют прямого решения. Такие ошибки должны быть сведены к минимуму во время разработки, и должен быть план их устранения в случае их возникновения. Поскольку пользователи не могут устранить эти ошибки самостоятельно, может потребоваться простой способ связаться со службой поддержки.
Ошибки, находящиеся вне контроля разработчика, следует отслеживать с помощью таких инструментов, как Sentry. Эти ошибки необходимо исправить, чтобы пользователи не могли с ними столкнуться. Кроме того, убедитесь, что у пользователей есть механизм возврата в приложение, если они столкнутся с такими ошибками.
Это известные ошибки, для которых пользователь не может решить проблему. Если пользователи не могут решить их самостоятельно, это указывает на упущенную возможность обработки ошибок. Если пользователи намеренно выполняют ненормальные действия, это может быть признаком уязвимости безопасности.
Эти ошибки возникают при злонамеренном намерении использовать приложение. Обычно они возникают из-за уязвимостей безопасности, и их следует предотвращать во время разработки. Крайне важно решать основные проблемы безопасности, такие как CORS и XSS, и сотрудничать с командой безопасности для создания безопасного приложения.
Эти ошибки обычно являются частью бизнес-логики, о которой разработчики уже знают:
В этих случаях предоставьте соответствующие инструкции в приложении или создайте отдельные страницы для направления пользователей.
Пользователи должны четко понимать, что делать дальше после появления сообщения об ошибке. Это помогает снизить частоту ошибок и предотвращает отказ пользователей. Поэтому рядом с сообщением об ошибке важно включить призыв к действию.
Например, если произошла ошибка проверки поля, сосредоточьтесь на поле, в котором произошла ошибка. Если пользователь перешел на несуществующую страницу, предоставьте кнопку для возврата на предыдущий экран.
Мы изучили обработку ошибок. Давайте эффективно управлять ошибками, используя различные инструменты и технологии, такие как инструменты мониторинга ошибок и ErrorBoundary React, который может обнаруживать ошибки в ограниченном объеме.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3