#javascript #node.js #error-handling #try-catch
#javascript #node.js #обработка ошибок #попробуйте-catch
Вопрос:
Я использую try catch для node.js скрипт:
try {} catch (err) {console.log(err)}
Я получаю вывод, подобный этому:
{
stack: [Getter/Setter],
arguments: [ 'undefined' ],
type: 'called_non_callable',
message: [Getter/Setter]
}
Есть ли простой способ сделать это более информативным? Включить номера строк и имена функций и тому подобное?
Ответ №1:
Эти [Getter/Setter]
члены указывают на дополнительную информацию, доступную для объекта error. Вы можете легко выгрузить содержимое этих геттеров / установщиков, используя небольшую вспомогательную функцию (очень тривиальная реализация, дальнейшая доработка зависит от вас)
function dumpError(err) {
if (typeof err === 'object') {
if (err.message) {
console.log('nMessage: ' err.message)
}
if (err.stack) {
console.log('nStacktrace:')
console.log('====================')
console.log(err.stack);
}
} else {
console.log('dumpError :: argument is not an object');
}
}
try {
not_defined.function_call();
} catch(err) {
dumpError(err);
}
Вы также могли бы расширить Object.prototype
для улучшения доступности (таким образом, вы могли бы использовать err.dumpError()), хотя расширение Object.prototype
сопряжено с риском перезаписи существующей функциональности.
Комментарии:
1. Реальная жизнь меняется, тай
2. Как получить более глубокий уровень err.stack?