Metodo printStackTrace in produzione

di il
4 risposte

Metodo printStackTrace in produzione

Ciao a tutti,
try {
	    	fileInputStream = new FileInputStream(fileToDownload);
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		}
Utilizzando il metodo printStackTrace() è sicuro mostrare lo stack a schermo in ambiente di produzione?

grazie

4 Risposte

  • Re: Metodo printStackTrace in produzione

    Pierino er matto ha scritto:


    Utilizzando il metodo printStackTrace() è sicuro mostrare lo stack a schermo in ambiente di produzione?
    Quello che è sicuro è che printStackTrace() scrive su standard-error. Poi dove vada lo standard-error.... dipende ....

    Precisa cosa intendi per "ambiente di produzione" ... Applicazione desktop? Web application? Quale application server?
  • Re: Metodo printStackTrace in produzione

    Web Application sul server JBoss
  • Re: Metodo printStackTrace in produzione

    Pierino er matto ha scritto:


    web Application sul server JBoss
    Non uso e non me ne intendo di JBoss. Ma da una veloce ricerca:
    http://stackoverflow.com/questions/1396353/where-does-system-err-println-output-go-in-jboss
  • Re: Metodo printStackTrace in produzione

    Ni, piu' no che si.

    Innanzitutto, ASSIOMA per qualunque applicazione che non sia la classica applicazione di test, NON SI STAMPA MAI direttamente su console, ma si una una libreria per il logging (log4j su tutte, che ha fatto scuola ).

    Questo perche', SENZA CAMBIARE UNA VIRGOLA NEL CODICE, di volta in volta puoi stampare su console, file, database, cloud, e qualunque altro posto improbabile in cui ti venga in mente.

    Poi, il callstack va stampato in tutte quelle situazioni in cui stai gestendo un'eccezzione non prevista.

    Nel senso: se stai cercando di aprire un file non esistente, in un punto del codice in cui SAI che potresti trovarti in questa situazione (perche' lo hai esplicitamente implementato), il callstack e' relativamente inutile.

    Invece, se l'eccezzione e' stata generata da un pezzo di codice imprevisto e tu stai semplicemente intercettando tutte le possibili eccezzioni, in un punto che ti assicura che l'applicazione non schianti proprio per la presenza di eccezzioni strane, allora SI CHE TI SERVE avere il callstack, per capire da dove e' partito il problema.

    Ora, se mandarlo al client, o semplicemente loggarlo, e' questione delicata, ma neanche tanto: quello che devi assicurarti e' che, in caso di problemi, tu quello stack lo possa ricuperare in qualche modo.

    Ad esempio, in un mio web service, nell'XML di risposta, in caso di problemi, scrivo anche il callstack. L'utilizzatore non se ne fa nulla, ma poiche' mi manda l'XML, posso gia' vedere da questo dove puo' essere il problema, e cercare il log corrispondente.

    Tieni presente che nel (100-eps)% dei casi, ti accorgi del problema un bel po' dopo che e' successo/ Il callstack e' fondamentale.
Devi accedere o registrarti per scrivere nel forum
4 risposte