2015-10-17 9 views
7

Każda funkcja tworzy nowy obiekt błędu. Jak mogę uzyskać obraźliwe błędy? Na przykład to jest mój kod.JS: Jak śledzić błędy w przypadku wielu funkcji połączeń

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')) 
} 

Kiedy uruchamiam to uzyskać tylko ostatni błąd ("nie można uruchomić funkcję main '), ale chcę uzyskać wszystkie poprzednie błędy Czy masz najlepszego practive ? za to

Co robie to:

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

pytam, o wiesz o jakiejkolwiek innej bibliotece lub lepszy sposób, że coś robią, że rozszerzenia przedmiotu error ...

.

Coś jak:

err.push(new Error('...')) 
+0

Co to ma wspólnego z plikiem node.js? – plocks

Odpowiedz

6

Nie ma „standardowy” sposób zrobić coś takiego w node.js jeszcze. Istnieją różne biblioteki, które robią to, co opisujesz. Najlepszą metodą, jaką znalazłem, jest utworzenie niestandardowego obiektu błędu, który rozszerza domyślny obiekt JS Error, a następnie zdefiniowanie dla niego dodatkowych metod do własnych celów. Napisałem bibliotekę x-error, która robi właśnie to, możesz jej użyć i rozszerzyć (zobacz na dole README, jak ją rozszerzyć), lub po prostu spójrz na jej kod (który jest prosty) i przetasuj własny niestandardowy obiekt błędu realizacja.

Uwaga: błąd x ma metodę debug podobną do tej, której szukasz.

+0

Dziękuję. wygląda dobrze. Zanim wybierzesz jako "zaakceptuj odpowiedź", czekaj, czy ktoś inny utworzył inne biblioteki. – Aminadav

Powiązane problemy