JS: Как отследить ошибки, когда много вызовов функций

Каждая функция создает новый объект ошибки. Итак, как я могу получить предыдущие ошибки? Например, это мой код:

function main(callback) {
    a(function(err) {
        if (err) {
            callback(new Error('cannot run main function..'));
            return
        }
    })
}


function a(callback) {
    b(function(err) {
        if (err) {
            callback(new Error('cannot run b function'));
            return
        }
    })
}


function b(callback) {
    if (1 == 2) callback(new Error('Error in b function'))
}

Когда я запускаю это, я получаю только последнюю ошибку («не могу запустить основную функцию»), но я хочу получить все предыдущие ошибки. Есть ли у вас какие-либо лучшие подходы для этого?

Что я делаю, так это

if(err){
  err=new Error('cannot run this function.\r' + err.message)
}

Я спрашиваю, знаете ли вы о какой-либо другой библиотеке или лучшем способе сделать это. Что-то, что расширяет объект Error ...

Что-то вроде:

err.push(new Error('...'))
7 голосов | спросил Aminadav Glickshtein 17 +03002015-10-17T22:03:56+03:00312015bEurope/MoscowSat, 17 Oct 2015 22:03:56 +0300 2015, 22:03:56

1 ответ


0

В Node.js пока нет "стандартного" способа сделать что-то подобное. Существуют различные библиотеки, которые делают то, что вы описываете. Лучший метод, который я нашел, - это создать пользовательский объект ошибки, который расширяет стандартный объект JS Error, а затем определить для него дополнительные методы для ваши цели. Я написал x-error библиотеку, которая делает именно это, вы можете использовать ее и расширить (см. В нижней части README для как его расширить), или просто взгляните на его код (что довольно просто) и разверните собственную реализацию объекта ошибки.

Примечание: в x-error есть метод debug, который похож на тот, который вы ищете.

ответил Yuri Zarubin 17 +03002015-10-17T22:21:10+03:00312015bEurope/MoscowSat, 17 Oct 2015 22:21:10 +0300 2015, 22:21:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132