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

avec Java Discussion :

Mettre à jour un code java


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut Mettre à jour un code java
    Je dois mettre à jour un code en appliquant les règles suivantes:
    Si une exception est levée par s.execute() alors appeler c.rollback()
    et propager l'exception,sinon appeler c.commit()
    Dans tous les cas ,c.closest() doit être appelée avant de quitter la méthode a(Service s,Connection c)

    le code est le suivant:
    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
    public class A {
    	// doit executer le service avec les connections données
     
    	void a(Service s,Connection c) {
    		s.setConnection(c);
    		s.execute();
    	}
     
    }
     
    interface Service{
    	void execute() throws Exception;
    	void setConnection(Connection c);
    }
     
    interface Connection{
    	void commit();
    	void rollback();
    }
     
     
     
    public static void main(String[] args) {
    		Service service=new Service() {
    			public void execute()throws Exception{
    				System.out.println("execute");
    			}
     
     
    			public void setConnection(Connection c) {
    				System.out.println("setConnection");
     
    			}
    		};
    }
    En suivant ces instructions j'ai donc complété en faisant le code suivant:

    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
    void a(Service s,Connection c) throws Exception {
    		s.setConnection(c);
    		s.execute();
                    c.rollback();//doit appeler rollback() si une exception est levée et propager l'exception
                    c.commit();//Sinon appeler c.commit()
                    c.close();//dans tous les cas appeler c.close()
    	}
     
    }
     
    interface Service{
    	void execute() throws Exception;
    	void setConnection(Connection c);
    }
     
    interface Connection{
    	void commit();
    	void rollback();
    }
    j'ai suivi les instructions mais je ne sais pas si c'est juste
    Qu'est ce que vous en pensez svp?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Hello,

    ben non c'est pas juste.

    rollback() ne doit être appelé que s'il y a une une exception.
    commit() ne doit être appelé que s'il n'y a pas eu d'exception.
    et close() doit toujours être appelé, sous-entendu y compris s'il y a une exception. Donc avec ton code il n'est pas appelé s'il y a une exception.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut Re
    Je ne comprends pas là,il y'a bien une exception avec "throws exception" donc
    j'ai appelé rollback();qu'est ce qui est faux dans mon code?je ne vois pas svp.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void a(Service s,Connection c) throws Exception {
    s.setConnection(c);
    s.execute();
    c.rollback();//doit appeler rollback() si une exception est levée et propager l'exception
    c.commit();//Sinon appeler c.commit()
    c.close();//dans tous les cas appeler c.close()
    }
    ????

  4. #4
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 681
    Points
    1 681
    Par défaut
    Citation Envoyé par master MI Voir le message
    Je ne comprends pas là,il y'a bien une exception avec "throws exception" donc
    j'ai appelé rollback();qu'est ce qui est faux dans mon code?je ne vois pas svp.
    Que comprends-tu aux exceptions ??
    La déclaration "throws Exception" dit juste que la méthode est susceptible de transmettre une exception de ce type au code appelant. Point.

    Lit un peu la doc. Par exemple :
    https://anisfrikha.developpez.com/tu...va/exceptions/

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut Re
    Merci mais Votre lien ne marche pas.
    Sinon comment j'utilise c.rollback(),c.commit() et c.close()
    dans mon code alors?

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Réessaie le lien, il marche parfaitement. Peut-être qu'il y a eu une panne temporaire.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut Re
    Je suis connecté sur un réseau professionnel,il doit avoir des proxys,j'essaierai sur mon pc
    perso une fois à la maison.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    j'ai fait le code suivant correspondant aux critères que j'ai posés là haut,
    j'ai utilisé un try/catch/finally,j'obtient le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void a(Service s,Connection c) throws Exception {
     
            try {
            s.setConnection(c);
            s.execute();
        }catch( Exception e) {
            c.rollback();
        }finally {
            c.commit();
        }
    Est ce vous croyez que c'est juste ,sinon la phrase"dans tous les cas,c.close() doit être appelé avant de quitter la méthode a(Service s,Connection c)"
    je ne sais pas la traduire en code pour compléter le code que j'ai fait,pouvez vous m'aider ?

  9. #9
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 681
    Points
    1 681
    Par défaut
    Citation Envoyé par master MI Voir le message
    Est ce vous croyez que c'est juste ,sinon la phrase"dans tous les cas,c.close() doit être appelé avant de quitter la méthode a(Service s,Connection c)"
    je ne sais pas la traduire en code pour compléter le code que j'ai fait,pouvez vous m'aider ?
    Dans la page que j'indiquais plus haut il est écrit :
    Citation Envoyé par https://anisfrikha.developpez.com/tutoriel/java/exceptions/
    Le mot clé finally, généralement associé à un try, permet l'exécution du code situé dans son bloc et ceci quelle que soit la manière dont s'est déroulé l'exécution du bloc try.
    Donc on aurait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        try {
            s.setConnection(c);
            s.execute();
     
            c.commit();  // si ok on "commit"
        }catch( Exception e) {
            c.rollback(); // si ko on "rollback"
        }finally {
            c.close();  // dans tous les cas : on appelle "close"
        }

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. Mettre à jour un code avec un nouveau langage
    Par Kawamx dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 02/06/2019, 13h09
  2. Réponses: 1
    Dernier message: 17/05/2019, 17h06
  3. [AC-2007] Est-il possible de mettre à jour du code VBA sans rentrer dedans ?
    Par tibofo dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/10/2010, 18h50
  4. mettre à jour une application java
    Par robert_trudel dans le forum Langage
    Réponses: 5
    Dernier message: 13/04/2007, 19h02
  5. Réponses: 2
    Dernier message: 29/05/2006, 17h02

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