javascript node.js получает номер строки в try catch?

17

Я использую try catch на скрипте node.js:

try {} catch (err) {console.log(err)}

Я получаю вывод следующим образом:

{ stack: [Getter/Setter],
  arguments: [ 'undefined' ],
  type: 'called_non_callable',
  message: [Getter/Setter] }

Есть ли простой способ сделать это более информативным? Включить номера строк и имена функций и т. Д.

    
задан Mark 27.04.2011 в 12:49
источник

1 ответ

40

Пользователи [Getter/Setter] указывают дополнительную информацию об объекте ошибки. Вы можете легко сбрасывать содержимое этих геттеров / сеттеров с помощью небольшой вспомогательной функции (очень тривиальная реализация, дополнительная доработка зависит от вас).

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 несет риск перезаписи существующих функций.

    
ответ дан schaermu 27.04.2011 в 14:05
источник