Я новичок в обещаниях. Я пытаюсь справиться с отказом от обещаний. У меня есть следующий псевдокод:
function myFunction(string) {
// This is an intentional error -> generates TypeError.
// I would like this to throw exception in catch handler below
// but it does not.
string.length();
}
somePromise...then(function() {
myFunction("x");
}).catch(function(error) {
// This converts the rejection to exception and is correctly handled as such.
// But only for my thrown error (using throw in myFunction). For TypeError
// it is an unhandled rejection. Why?
setTimeout(function() {throw error;}, 1);
});
Код довольно понятен. В моем коде есть ошибка типа. Он генерирует необработанное отклонение, но мне бы очень хотелось, чтобы он вызвал обычное исключение, как это делают другие исключения в myFunction. Почему ошибка типа не улавливается обработчиком catch? Как я могу изменить обработчик catch для обработки этой ошибки?