Почему node.js не показывает весь callstack при возникновении exeption?
Доброго времени суток друзья, я пришёл из мира .net и мне не понятно почему если exeption случился во внешней библиотеке node.js и если я не обернул вызов этой внешней библиотеки в try/catch то я никогда не узнаю какой именно участок моего кода вызвал exeption, так как в выводе exeption'а будет только то место где он произошёл внутри библиотеки?
На скрине просто один из примеров такого случая. Как можно увидеть тут нет ни строчки из моего клиентского кода и callstack обрывается внутри библиотечной функции:
Неужели в мире node.js мы всё должны оборачивать в try/catch только для того что бы не потерять callstack нашего вызова внешнего кода???
Один из участников сообщества предложил такое решение проблемы:
попробуй в свой главный файл добавить отлов. возможно здесь будет более удобный стектрейс. ну а так, да, хорошо бы использовать try catch в тех местах где может вывалиться исклчение.
process.on('unhandledRejection', (reason, promise) => { console.log('Unhandled Rejection at:', promise, 'reason:', reason); // Application specific logging, throwing an error, or other logic here });
Ответы (1 шт):
По дефолту, stack trace ограничен 10-ю значениями
https://nodejs.org/api/errors.html#errors_error_stacktracelimit
