#javascript #google-chrome #google-chrome-extension #error-handling
#javascript #google-chrome #google-chrome-extension #обработка ошибок
Вопрос:
как вы, возможно, уже знаете, lastError
это глобальная переменная или свойство из chrome.runtime API, используемое для определения, произошла ли какая-либо ошибка во время выполнения вызова Chrome API.
Он определяется только тогда, когда произошла ошибка, если вызов API в порядке, он не будет определен. Ошибка может быть вызвана несколькими причинами, например, неправильным вызовом API из-за отсутствия или неправильного типа параметра, или это может быть вызвано взаимодействием пользователя, например. пользователь отклоняет предоставление разрешения нажатием кнопки «Отмена».
Chrome унифицировал обработку ошибок, используя эту переменную для сообщения об ошибках в своих API вместо возврата аргумента ошибки. Из-за асинхронной природы API Chrome выполняет дополнительную проверку, которая проверяет, chrome.runtime.lastError
проверена / обработана ли функция обратного вызова из кода расширения, если нет, она выдает известную Unchecked runtime.lastError
Вы можете быстро получить сообщение об ошибке, установив флажок chrome.runtime.lastError.message
, и отобразить его пользователю, и все это отлично подходит для большинства случаев использования, но я бы не писал этот вопрос, если бы это был мой случай.
Итак, что происходит, когда вам нужно реализовать некоторую дополнительную логику кода на основе результата ошибки. Давайте возьмем launchWebAuthFlow в качестве примера, для простоты вопроса я сосредоточусь только на двух возможных результатах / ошибках, которые могут произойти:
User interaction required.
выдается при вызове API с неверным значением аргумента, в данном случаеinteractive = false
The user did not approve access.
происходит, когда пользователь закрывает окно аутентификации
Итак, мой вопрос в том, каким будет наилучший способ реализовать дополнительную логику на основе ошибки? Приведено сравнение chrome.runtime.lastError.message
единственного способа сделать это, и если да, то безопасно ли это, учитывая, что язык пользовательского браузера может отличаться от английского.
Каково ваше мнение, должна ли команда разработчиков Chromium реализовать: chrome.runtime.lastError.code
?
Комментарии:
1. Сообщение всегда будет на английском языке, поскольку это внутренний API.
2. @wOxxOm Это полезно знать, но опять же, безопасно ли полагаться на сообщение, поскольку они не определены в документации, я думаю, они могут быть предметом внезапного изменения.
3. Ну, другого способа нет. Сообщения не изменены. Они могут меняться, но до сих пор этого никогда не происходило, если только в сообщении не было опечатки или другой вопиющей ошибки.
4. Я не знаю ответа, но ваше вступление ответило на мой вопрос о непроверенной ошибке во время выполнения 🙂