Vengo da java, quando ho ricevuto un errore previsto ho stampato tracce dello stack. Sto arrivando ora a lavorare su nodejs (mai veramente lavorato su javascript). e nel progetto nodejs che ho bisogno di mantenere (il progetto era già stato codificato da altri sviluppatori javascript) vedo la registrazione degli errori che segue:
logger.error('some message ' + e.message)
o
logger.error('some message ' + e);
o
logger.error('some message ' + e.toString());
o
logger.error('some message');
Non ho visto stacktraces nei log. Venendo da Java ho convertito alcuni errori in:
logger.error('some message ' + e.stack)
ma poi quando uno sviluppatore javascript peer ha verificato che aveva un occhio cattivo su di me e mi ha chiesto perché lo faccio? Gli ho detto se l'errore è inaspettato, vogliamo tutte le informazioni a riguardo. Era molto turbato dal fatto che io volessi lo stack e non il messaggio, la sua affermazione è che ingombrerebbe i log, quindi ho detto ma l'errore è inaspettato, mi ha detto che qui non c'è nessun nodo qui. Voglio ancora .stack
ma tutti gli sviluppatori di javascript non lo vogliono pensano che sia una cattiva pratica stampare il .stack
, sento di perdere informazioni importanti. Abbiamo finito con il cambiare il mio .stack
in .message
.
Ho guardato i log e talvolta .stack
stampa solo due righe non molto di uno stack, tuttavia per me la prima riga in cui è stampato il nome file e il numero di riga in cui si è verificato il problema giustifica il stack
, il in questo caso la richiesta di sviluppatori javascript era I can search the error message in code and find it
, per me non è sufficiente perché non penso che sia scalabile un giorno verrebbe dove troveremmo più posti con la stessa stampa e se avessimo uno stack lo sapremmo esattamente quale file ha stampato l'errore e in alcuni casi ha anche stack.
Venendo da java in javascript - mi manca qualcosa? dovrei fare e.message
e non e.stack
? sto prendendo qualcosa da java che non dovrei essere?
grazie