IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Pas obligé de catcher l'exception


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Par défaut Pas obligé de catcher l'exception
    Bonjour,

    Pourquoi certaines exception comme NumberFormatException (générée par ex par Integer.parseInt()) ne nécessite pas obligatoirement un try/catch ou une redirection alors que FileNotFoundException oui ?

    Quel est le mécanisme derrière ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    C'est quand même le genre de trucs qu'on s'attendrait à trouver dans une FAQ -_-°

    Voici le lien : https://java.developpez.com/faq/java...s-d-exceptions
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Par défaut
    Ah merci beaucoup !

    Dans toutes les recherches que j'ai faites (hors FAQ j'avoue), je n'avais que la distinction Exception / Error.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Bon par contre j'ai fait une fausse manip', j'étais pas censé poster tout de suite j'avais une note à ajouter.

    Dans le monde Java moderne, cette distinction entre checked exception et runtime exception, n'est pas appréciée de tout le monde.

    D'abord en réalité ce n'est pas très utile. Imaginons que les checked exception ça n'existe pas et que tout soit runtime exception. Eh bien, on a perdu quoi, en qualité ? Rien. Et donc, c'est utile à quoi, ben, rien aussi. A la rigueur, pour les débutants, ça leur enseigne qu'il faut se rappeler, qu'un fichier, c'est pas parce qu'on essaie de le lire qu'il existe forcément. Mais bon, un développeur expérimenté est au courant de ces choses-là.
    En pratique les checked exception sont surtout là pour nous gêner quand on utilise des lambdas et de l'asynchrone. Tout remplacer par des runtime exceptions n'a pas vraiment d'inconvénient, donc bon...

    Ensuite c'est subjectif. Si un nombre ou une date n'est pas dans le bon format, c'est quel genre d'erreur ? Le programmeur qui a pas vérifié ou pas bien construit la chaîne, ou un utilisateur externe au programme dont il est toujours possible qu'il tape n'importe quoi ? Eh ben, ça dépend. Or, qu'une exception soit checked ou runtime, ça dépend de rien, elle est l'un ou l'autre. Du coup ça ne va pas.

    Conclusion : cette histoire d'avoir deux trucs différents comme ça, c'est pas très aimé.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Par défaut
    Oui je suis d'accord avec ta remarque. Si on devais réunir les 2 types d'exceptions il faudrait qu'elles soit toutes au Runtime (sinon bonjour les catch des NullPointerException partout ).

    Maintenant je pense que les checked exceptions font gagner pas mal de temps à tous les devs non experts et limitent pas mal les risques de bugs. Par exemple pour reprendre le cas du FileNotFoundException, c'est un cas assez commun et donc la majorité des gens vont y penser mais si on commence à utiliser des fonctions moins standard (des libs externes par exemple), on a vite fait d'oublier un catch.
    Dans tous les cas, la non présence d'un fichier à sa lecture doit être traitée par le dev donc ça ne me choque pas plus que ça d'être forcé à la compilation.

    Après comme tu dis cela reste subjectif, peut-être qu'une solution intermédiaire comme la possibilité de mettre un tag ou une annotation pour stopper la propagation de l'exception serait intéressante. A la manière du @SuppressWarning.

  6. #6
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Oups j'en profite pour corriger ce qui est dit dans cette FAQ comme "vous ne serez donc pas amené à en implémenter" (en parlant des RuntimeException).
    C'est inexact! pourquoi? parce que les RuntimeExceptions relèvent de deux cas différents:
    - les incidents qui sont effectivement de runtime
    - les violations de contrat d'API: comme je l'ai dit dans un autre post, l'idée est de ne pas forcer un code appelant à faire un catch sur un contrôle dont il a la responsabilité. Donc il est tout à fait possible (et même souhaitable) de définir une exception de Runtime quand on veut par ex. spécifier une contrainte
    ("int val "dans le paramètre en précisant les valeurs acceptées pour "val" sinon on lance une Exception maison pour dénoncer cette violation)
    voir: http://scrountch.info/java/chunk/ch4...control%C3%A9e

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Catcher une exception
    Par kimausoleil dans le forum JPA
    Réponses: 6
    Dernier message: 01/12/2010, 12h33
  2. Réponses: 8
    Dernier message: 29/09/2009, 11h31
  3. Réponses: 170
    Dernier message: 19/08/2009, 16h13
  4. catcher une exception
    Par Invité dans le forum Général Java
    Réponses: 2
    Dernier message: 27/05/2008, 18h00
  5. Catcher une exception lancée dans un plugin
    Par :Bronsky: dans le forum C++
    Réponses: 8
    Dernier message: 18/01/2005, 00h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo