#javascript #dictionary #error-handling
#javascript #словарь #обработка ошибок
Вопрос:
Я пытаюсь получить доступ к некоторым парам ключ / значение на карте, но не всегда знаю, какие ключи доступны. Мне нужно отобразить информационное сообщение, когда определенные ключи не найдены. Эта карта является глобальной и используется в большом количестве мест, например.
data = { 'KEY_A' : "A: {0}" }
Моя текущая реализация для обнаружения ошибок заключалась в использовании глобального прослушивателя ошибок:
window.onerror = function(msg, url, line, col, error) {
console.log("Error: " msg "nURL: " url "nLine: " line);
return false;
};
И затем я обращаюсь к карте со следующим:
theKey = 'KEY_A';
console.log(data[theKey].format("extras"));
Проблема здесь в том, что при срабатывании обработчика ошибок я вижу это сообщение в своей консоли:
Error: TypeError: data[theKey] is undefined
URL: http://localhost:8080/index.html#pages/errors
Line: 18
Проблема в том, что журнал содержит имя моей переменной theKey
вместо фактического значения самого ключа, что означает, что в обработчике ошибок я фактически не могу зарегистрировать ключ, который не удалось извлечь?
Как я мог бы получить значение ключа внутри моего обработчика ошибок?
Комментарии:
1. Да, это действительно раздражает (я имею в виду, что движок, вероятно, действительно знает, каково текущее значение, нет причин не передавать его с ошибкой). Единственным решением, которое я могу придумать, было бы перехватывать его с помощью прокси-сервера или выполнять надлежащие проверки при каждом доступе.
2. Обязательно ли это должно быть в обработчике ошибок, или вы открыты для изменения способа доступа к ключам?
3. Я пытался использовать подход обработчика ошибок, поскольку это было бы простым решением проблемы, в отличие от необходимости изменять строку, которая обращается к карте, что, похоже, будет тем, что мне нужно сделать.