Предотвращение ошибки
Ребята, подскажите, как решить следующую задачу:
У меня следующий функционал:
class doctorsNavModule {
constructor () {}
handler () {
const
_this = this;
const
trigger = $('.submenu__link-nav-trigger');
trigger.on('click', function (event) {
event.preventDefault();
let
$this = $(this),
targer = $this.data('name'),
reqSection = {};
setTimeout(function() {
$('[data-target]').each(function () {
let
$this = $(this),
trigger = $this.data('target');
if (targer == trigger) {
reqSection = $this;
}
});
let reqScroll = reqSection.offset().top - 300; // Uncaught TypeError: reqSection.offset is not a function
console.log(reqScroll);
$('html, body').animate({
scrollTop: reqScroll
});
}, 500);
});
}
init () {
this.handler();
}
}
let doctorsNavInit = new doctorsNavModule();
doctorsNavInit.init();
И, при определенных действиях, следующий код: let reqScroll = reqSection.offset().top - 300; выдает ошибку: Uncaught TypeError: reqSection.offset is not a function После чего приложение падает. Я знаю (думаю), что данный момент можно обработать, чтобы код не ломался с помощью перехвата ошибок, "try..catch", но не понимаю как правильно это сделать. Помогите, пожалуйста решить данную задачу. |
странный код,
зачем setTimeout ? для чего reqSection = {}; |
s24344,
А зачем у вас setTimeout ? Вместо использования "try..catch" лучше написать правильный код |
Это просто пример. Мне интересна сама идея, возможно ли в месте, где будет ошибка, обработать этот момент.
|
try..catch используют в основном когда работают с внешними данными, тут он не к чему.
|
Спасибо.
|
Обработать-то легко
let reqSection = {};
try {
let reqScroll = reqSection.offset().top - 300;
}
catch {
reqScroll = 0;
}
alert(reqScroll);
Но это замаскирует ошибки кода. |
| Часовой пояс GMT +3, время: 13:46. |