Работа с try catch. Почему не выводится результат работы кода?

Рейтинг: 2Ответов: 1Опубликовано: 19.01.2023

Задание: Реализовать функцию, в которой есть возможность вести индекс животного, которое вы хотите увидеть. Если пользователь вводит индекс, не содержащий животное, код выдаст ошибку TypeError, когда имя ссылается на неопределенное значение. Вокруг кода есть блок try, вызывающий ошибку TypeError. Существует блок catch, перехватывающий ошибку и содержащий код для информирования пользователя о том, что он ввел неверный индекс.

Проблема: заключается в том что не выводит console.log('Данного id не существует, введи от 0 до 6');

Мой код:

function funcOfAnimals (id) {
    if (objectOfAnimals[id]) {
        return console.log(objectOfAnimals[id]);
    }
    else {
        throw TypeError('Не найден id!');
    }
    try {
        funcOfAnimals(22);
    } catch (error) {
        console.log('Данного id не существует, введи от 0 до 6');
    }
}
funcOfAnimals(22);

`

Ответы

▲ 1Принят

Вам надо вызов функции обернуть блоком try-catch

const objectOfAnimals = {
  1: 'Кот'
}

function funcOfAnimals (id) {
  if (objectOfAnimals[id]) {
    return console.log(objectOfAnimals[id]);
  }
  else {
    throw TypeError('Не найден id!');
  }
}

try {
  funcOfAnimals(22);
} catch (e) {
  console.log('Данного id не существует, введи от 0 до 6');
}

try {
  funcOfAnimals(1);
} catch (e) {
  console.log('Данного id не существует, введи от 0 до 6');
}

UPD: При желании, блок try-catch можно встроить и в функцию

const objectOfAnimals = {
  1: 'Кот'
}

function funcOfAnimals (id) {
  try {
    if (objectOfAnimals[id]) {
      return console.log(objectOfAnimals[id]);
    }
    else {
      throw TypeError('Не найден id!');
    }
  } catch (e) {
    console.log('Ошибка', e);
    console.log('Данного id не существует, введи от 0 до 6');
  }
}

funcOfAnimals(22);
funcOfAnimals(1);