Xeroxed
@Xeroxed
Senior javascript developer

Возможно ли получить в объекте «e» (error) переменную с ошибкой при использовании try catch?

Здравия. Есть ли возможность получить в объекте «e» (error) переменную с ошибкой «A» в catch? Подразумевается выход за пределы массива, в следствии переменная получает свойство «undefined». Могу заблуждаться, поправьте если же достаточно свидомы.

var Map = [];
Map.length = 50;
try {
    var A = Map[j + 100];
    var B = Map[j + 10];
} catch(e) {
    throw e;
}
  • Вопрос задан
  • 182 просмотра
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Массивы в JS динамические, выйти за их пределы невозможно. Отлов undefined — ну ок, а что если в массиве и лежит undefined?
Проще следить, чтобы индекс не превышал заданное число, с помощью обертки (обернув весь массив или сделав функцию для доступа):

var myArr = [1, 2, 3];
myArr.get = function (index) {
    if (index > this.length - 1) {
        throw new RangeError();
    } else {
        return this[index];
    }
}
Ответ написан
hahenty
@hahenty
('•')
Можно попытаться обратиться к какому-нибудь свойству в А, которое присуще ожидаемому типу значения.
Что-то типа:
var A = Map[j + 100];
//...
A.toExponential(); // здесь вылетит, если не число,
A.chatAt(0); // здесь вылетит, если не строка,

и другие прототипные методы для других типов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы