meltmestnt
@meltmestnt
У верблюда два горба, потому что жизнь - борьба

Как заставить работать скрипт с ошибками без конструкции try { .. } catch(e) { .. }?

Здравствуйте. Есть скрипт: JSFiddle , все работает, однако скрипт вызывает ошибки, которые ломают его. Решил использовать конструкцию try { ... } catch(e) { ... } и все стало на свои места. Однако можно ли решить данную проблему без данной конструкции и нужно ли вообще ( объясните пожалуйста по поводу этой конструкции, а именно стоит ли пытаться избавиться от ошибок или и так сойдет )? Прошу обратить внимание на выделенные части кода, что вызывают ошибку :
div.classList.add('tip');
      currentTarget.appendChild(div);
      if (div.offsetHeight > (parseInt(getComputedStyle(document.querySelector('#house')).marginTop) - pageYOffset)) {
        div.classList.remove('tip');
        div.classList.add('tip-bottom');
      }

и
try {
        currentTarget.removeChild(currentTarget.querySelector('.tip-bottom'));
      }
      catch(e) {
        console.log(e);
      }
      try {
        currentTarget.removeChild(currentTarget.querySelector('.tip')) || relatedTarget.removeChild(relatedTarget.querySelector('.tip'));
      }
      catch(e) {
        console.log(e);
      }
  • Вопрос задан
  • 230 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Проверяйте, существует ли элемент, который пытаетесь удалить:

const el = currentTarget.querySelector('селектор элемента');
if (el) {
  el.remove();
}
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Как что делать, добавлять проверки. Исключения ведь вылетают не просто так, а в определённых случаях. Значит можно анализировать значения переменных и не выполнять действия, ведущие к ошибкам, например вызов метода у null или undefined.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Конечно так сойдет, продолжай в том-же духе.
Ответ написан
Ваш ответ на вопрос

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

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