2015-10-17 8 views
7

Ogni funzione crea un nuovo oggetto errore. Quindi, come posso ottenere gli errori preudius? Per esempio, questo è il mio codice:.JS: come rintracciare gli errori in presenza di numerose funzioni, chiamate

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

Quando eseguo questo, ottengo solo l'ultimo errore ("non è possibile eseguire la funzione principale '), ma voglio ottenere tutti gli errori precedenti Avete migliore practive ? per questo

quello che sto facendo è questo:

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

chiedo, di sai di qualsiasi altra libreria o modo migliore per fare quel qualcosa che si estendono l'oggetto Error ...

.

Qualcosa di simile:

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

Che cosa ha a che fare questo con node.js? – plocks

risposta

6

Non c'è un modo "standard" di fare qualcosa di simile in Node.js ancora. Ci sono varie librerie che fanno ciò che stai descrivendo. Il metodo migliore che ho trovato è quello di creare un oggetto errore personalizzato che estende l'oggetto JS Error predefinito e quindi definire metodi aggiuntivi ad esso per i propri scopi. Ho scritto la libreria x-error che fa proprio questo, puoi usarlo ed estenderlo (vedi in fondo README per come estenderlo), o semplicemente dare un'occhiata al suo codice (che è semplice) e lanciare il tuo oggetto errore personalizzato implementazione.

Nota: x-error ha un metodo debug simile a quello che stai cercando.

+0

Grazie. sembra buono. Prima di selezionare "accetta risposta", in attesa di vedere se qualcun altro ha creato altre librerie. – Aminadav

Problemi correlati