2015-08-07 8 views
5

In Java, vedo molti codici come di seguito. Quello che mi chiedo è, è sufficiente solo per mostrare un messaggio di errore?Cosa fare quando si rileva e (rror) in Java

Sono nuovo di Java. Quello che voglio imparare è come gestire l'errore in modo efficiente e conoscere le migliori pratiche per la gestione degli errori. In generale, cosa dovrei fare nel blocco catch?

Esempio 1: printStackTrace()

} catch (SomeException e) { 
    e.printStackTrace(); 
} 

Esempio 2: getMessage

} catch (SomeException e) { 
    e.getMessage(); 
} 

Esempio 3: spettacolo messaggio di errore personalizzato

} catch (IOException E) { 
    System.out.println("Error occured. Please try again."); 
} 
+0

L'utilizzo di un logger è preferito. Come Amila ha risposto ... – Danielson

risposta

5

In breve, la risposta è dipende. Fai quello che la tua logica aziendale ti chiede.

  • Se si desidera collegarlo, registrarlo.
  • Se si desidera visualizzare l'errore nella console, stamparlo lì.
  • Se si desidera tornare al chiamante del metodo, andare a farlo.

Non ci sono possibilità e necessità a seconda della situazione.

+1

Grazie @SURESH e Pshemo, risposte come questa è quello che mi stavo chiedendo ... – phi

0

e.printStackTrace stampa il messaggio al console, puoi usarlo quando l'utente vede la console ...

e.getMessage() Restituisce una stringa, in modo da poter gestire come vuoi, come:

try { 

} catch (IOException E) { 
    System.out.println("Error occured. Please try again."+ e.getMessage()); 
} 

o utilizzare il getMessage() quando non avete console, ma, per esempio, una GUI, è può impostare:

textField.setText(e.getMessage()); 
2

vi consiglio di iniziare con la sezione delle eccezioni in Java tutorial.

Quello che dovresti fare nel blocco catch dipende dalla tua applicazione.

In genere, se si registra solo l'errore, è necessario includere lo stacktrace per semplificare il debug.

logger.error("Error occurred.", e); 
-1
e.printStackTrace(); 

quanto sopra potrebbe essere buona pratica dal momento che traccerà lo stack e mostrare che cosa e dove il problema è

+0

e se non ci fosse una console? – SSH

+0

sì, è possibile utilizzare uno di loro a seconda della situazione. – Asif

0

Si dovrebbe registrare l'errore utilizzando un registratore automatico in modo da poter decidere dove scrivere l'excetion (es . un file) e anche fare qualcos'altro, a seconda di cosa sta facendo il tuo codice. Ad esempio, se si sta scrivendo in un database, è necessario riportare i dati allo stato precedente.

Suggerisco anche di non sopprimere l'eccezione, ma lasciare che l'utente sappia che qualcosa è andato storto. Puoi catturare l'eccezione e avvolgerla in un'altra con un messaggio più user-friendly.

0

è anche possibile reindirizzare a un'altra pagina come la pagina di errore mentre si ottiene un'eccezione nel blocco di prova. puoi anche descrivere l'errore nella pagina html. quindi l'utente reindirizza alla pagina di errore se ci sono eccezioni nel blocco catch.

Problemi correlati