Например, я просто пытался поймать ENOENT
по наивности делают это:Почему невозможно попробовать/уловить некоторые вещи?
try {
res.sendFile(path);
} catch (e) {
if (e.code === 'ENOENT') {
res.send('placeholder');
} else { throw e; }
}
Это не работает!
Я знаю, что правильный путь заключается в использовании обратного вызова ошибки sendFile
, но это действительно удивительно и плохо для меня, что основная функция языка исключений здесь не работает.
Я думаю, что, может быть, сам выражает себя. И они хотят, чтобы ошибки не убивали сервер так быстро. Это понятно.
Но я получаю эту хромую сообщение:
Error: ENOENT: no such file or directory, stat '<file>' at Error (native)
Не большой.
ОК, поэтому я на 99% уверен, что ответ на мой вопрос - это просто «фреймворк, пойманный для вас», но это не очень полезно –
http://softwareengineering.stackexchange.com/questions/144326/try-catch- in-javascript-isnt-it-a-good-practice https://bytearcher.com/articles/why-asynchronous-exceptions-are-uncatchable/ –
Его из-за асинхронного характера Javascript, что код проглотит исключение вы бросаете. –