115 votes

Est-ce une mauvaise pratique d'attraper Throwable?

Est-ce une mauvaise pratique d'attraper Throwable ?

Par exemple quelque chose comme ceci :

 try {
    // Some code
} catch(Throwable e) {
    // handle the exception
}

Est-ce une mauvaise pratique ou devrions-nous être aussi précis que possible ?

16voto

Andrew Norman Points 41

directement à partir du javadoc de la classe Error (qui recommande de ne pas les attraper):

  * An <code>Error</code> is a subclass of <code>Throwable</code> 
 * that indicates serious problems that a reasonable application 
 * should not try to catch. Most such errors are abnormal conditions. 
 * The <code>ThreadDeath</code> error, though a "normal" condition,
 * is also a subclass of <code>Error</code> because most applications
 * should not try to catch it. 

 * A method is not required to declare in its <code>throws</code> 
 * clause any subclasses of <code>Error</code> that might be thrown 
 * during the execution of the method but not caught, since these 
 * errors are abnormal conditions that should never occur. 
 *
 * @author  Frank Yellin
 * @version %I%, %G%
 * @see     java.lang.ThreadDeath
 * @since   JDK1.0

13voto

duffymo Points 188155

Ce n'est pas une mauvaise pratique si vous ne pouvez absolument pas avoir une bulle d'exception à partir d'une méthode.

C'est une mauvaise pratique si vous ne pouvez vraiment pas gérer l'exception. Mieux vaut ajouter des "lancements" à la signature de la méthode que simplement attraper et relancer ou, pire, l'envelopper dans une RuntimeException et relancer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X