Il primo non viene compilato poiché il metodo error
accetta un String
come primo parametro e un Throwable
come secondo parametro.
e.getMessage()
non è un Throwable
.
Il codice dovrebbe essere
} catch (SomeException e) {
// No stack trace
logger.error("Noinstance available! " + e.getMessage());
}
Rispetto
} catch (SomeException e) {
// Prints message and stack trace
logger.error("Noinstance available!", e);
}
Le prime stampe solo un messaggio. Il secondo stampa anche l'intera traccia dello stack.
Dipende dal contesto se è necessario stampare la traccia dello stack o meno.
Se si conosce già il motivo per cui è possibile lanciare un'eccezione, non è consigliabile stampare l'intera traccia dello stack.
Se non si sa, è meglio stampare l'intero tracciato per individuare facilmente l'errore.
fonte
2015-09-29 09:28:49
Quasi tutto il tempo. A meno che tu non conosca il metodo SomeException e il metodo toString sovrascritto. E.getMessage() è il modo standard –
Se si registra solo il messaggio, non si ottiene una traccia di stack o l'eccezione nidificata dovrebbe essercene una. Registra l'eccezione ... –
@TheNeoNoirDeveloper: "Quasi sempre" cosa? Il primo? Preferisco non perdere le informazioni su da dove proviene l'eccezione, la sua causa, ecc. –