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 :

unreachable code erreur


Sujet :

Java

  1. #1
    Membre du Club Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Points : 57
    Points
    57
    Par défaut unreachable code erreur
    Bonjour à tous,

    Je travaille actuellement sur une application découpée en couches, et je suis en train d'écrire une méthode de service métier.
    Seulement, une erreur m'intrigue et je n'arrive pas à trouver d'où elle provient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    public Integer save(ScalarHabilitation scalarHabilitation, ScalarPersonne scalarPersonne,
    						ScalarSociete scalarSociete)//, Integer societeId)
    	throws ServiceException, RegleGestionException, TechniqueException {
    		IPersonneService personneService = ServiceFactory.getInstance().getPersonneService();
    		ISocieteService societeService = ServiceFactory.getInstance().getSocieteService();
    		Habilitation uneHabilitation = new Habilitation();
     
    		// Si l'habilitation n'est pas nouvelle, elle doit être modifiable
    		if (scalarHabilitation.getId() != 0) {
    			Habilitation habilitationStockee = this.rechercherParId(scalarHabilitation.getId());
    			{
    			if (!this.isModifiable(habilitationStockee)){
    				//, CezarSecuriteFonctionnelleManager.getInfosUser()){//societeId)) {
    					}
    				throw new AccessForbiddenException("Vous n'êtes pas habilité à modifier cette habilitation");
    			}
     
    		//Mise à jour de la personne
    			if (uneHabilitation.getPersonne() == null) {
    				uneHabilitation.setPersonne(new Personne());
    			}
    			scalarPersonne.saveToValueObject(uneHabilitation.getPersonne());
    			personneService.save(uneHabilitation.getPersonne());
     
    			// Si l'habilitation est nouvelle, la personne
     
    			//Mise à jour de la société
    			if (uneHabilitation.getEmployeur() != null) {
    				scalarSociete.saveToValueObject(uneHabilitation.getEmployeur());
    				societeService.save(uneHabilitation.getEmployeur());
    			}
     
     
    			//Enregistrement final de l'habilitation
    			// Si habilitation nouvelle
    			// Recherche compte habilitations valides pour cette personne
    			// SI > 0 leve reglegestionexception "deja une en cours"
     
    			if (scalarHabilitation.getId() == 0) {
    				if (!personneService.isHabilitable(uneHabilitation.getPersonne().getId())) {
    					throw new RegleGestionException(
    							InitManager.getRegleGestion("rg.habilitationservice.personne_non_habilitable"));
    				}
    			}
    		}
    			this.save(uneHabilitation);
    			return uneHabilitation.getId();
    	}
    Ce code me parait correct, seulement voila, ce morceau de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (uneHabilitation.getPersonne() == null) {
    				uneHabilitation.setPersonne(new Personne());
    			}
    est souligné et m'affiche comme erreur "unreachable code".

    Pouvez - vous m'aider, svp??

    Merci d'avance
    HQ Nadsky

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Surveilles bien tes accolades et l'indentation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		Habilitation habilitationStockee = this.rechercherParId(scalarHabilitation.getId());
    		{
    		if (!this.isModifiable(habilitationStockee)){
    			//, CezarSecuriteFonctionnelleManager.getInfosUser()){//societeId)) {
    				}
    			throw new AccessForbiddenException("Vous n'êtes pas habilité à modifier cette habilitation");
    			}
    				//Mise à jour de la personne
    		if (uneHabilitation.getPersonne() == null) {
    			uneHabilitation.setPersonne(new Personne());
    		}
    Une fois bien indenté, ce code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    		Habilitation habilitationStockee = this
    				.rechercherParId(scalarHabilitation.getId());
    		{
    			if (!this.isModifiable(habilitationStockee)) {
    				// ,
    				// CezarSecuriteFonctionnelleManager.getInfosUser()){//societeId))
    				// {
    			}
    			throw new AccessForbiddenException(
    					"Vous n'êtes pas habilité à modifier cette habilitation");
    		}
     
    		// Mise à jour de la personne
    		if (uneHabilitation.getPersonne() == null) {
    			uneHabilitation.setPersonne(new Personne());
    		}
    Le throw est en dehors du if et donc exécuté quoi qu'il arrive : le code qui suit ne pourra donc jamais s'exécuter...


    a++

  3. #3
    Membre du Club Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Points : 57
    Points
    57
    Par défaut
    C'est exactement cela

    merci beaucoup pour la rapidité et la clarté de ta réponse
    HQ Nadsky

  4. #4
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Points : 318
    Points
    318
    Par défaut
    A ce sujet, j'ai une question pour ma culture personnelle : s'agit-il d'une erreur fatale pour le compilateur (par là, je fais le distingo entre une vraie erreur que le compilateur n'accepte pas et ce qui apparait comme erreur dans Eclipse par exemple, mais qui n'est qu'une question de paramétrage de l'IDE) ?

    Merci d'avance

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Oui le compilateur détecte ce type d'erreur et stoppe la compilation, même si on peut passer outre avec un "faux" test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (true) throw new Exception();
     
    System.out.println("Hello World");
    Même si le Hello World ne pourra jamais être exécuté, le compilateur ne génèrera pas d'erreur car il n'évalue pas la condition.

    Notez toutefois que cela peut s'avérer pratique dans certain cas à des fins de tests


    a++

  6. #6
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Points : 318
    Points
    318
    Par défaut
    Merci pour la réponse ! Rapide et concis, as usual

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

Discussions similaires

  1. Erreur "Unreachable code"
    Par DebuDev dans le forum Général Java
    Réponses: 1
    Dernier message: 23/02/2008, 03h33
  2. [TSQLStoredProc] Comment connaitre le code erreur renvoye ?
    Par kase74 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/08/2005, 11h08
  3. Code erreur 131
    Par taket dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 29/06/2005, 15h43
  4. Codes erreur spécifiques
    Par jibe74 dans le forum Débuter
    Réponses: 3
    Dernier message: 10/12/2004, 11h19
  5. [Kylix] code erreur :-10 :(
    Par maamar dans le forum EDI
    Réponses: 2
    Dernier message: 21/09/2003, 01h15

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