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 :

message d'alerte de compilation


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 79
    Par défaut message d'alerte de compilation
    Bonjour, j'ai le message suivant :
    finally block does not complete normally

    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
     
    public static boolean VerifierIdentification(CIdentificationFlash ident) {
    	ResultSet rs = null;
    	Connection conn = null;
    	PreparedStatement pstmt = null;
    	boolean result = false;
            try {
    		conn = getConnection();
    		String query = "SELECT 1 FROM table_users u WHERE
                    u.user_id="+ident.user_id+" AND u.user_passwd='"+ident.mdp+
                    "' Limit 1;";
    		pstmt = conn.prepareStatement(query);
    		rs = pstmt.executeQuery();
    		result=(rs.getRow()==1);
          } catch (Exception e) {
    		return false;
         } finally {
    	try {
    		rs.close();
    		pstmt.close();
    	        conn.close();
    	        return result;
            } catch (SQLException e) {
                    return false;
           }
         }
    }

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,



    C'est normal car les bloc finally ne doivent pas contenir d'instruction return car cela peut masquer une exception.

    D'une manière générale le code n'est pas très correcte.
    • Pour libérer proprement les ressources, il faut utiliser un try/finally par ressource, et le finally ne doit contenir que l'appel de la méthode close().
    • Catcher les exceptions pour retourner false c'est "tout pourri" : il n'y a rien de mieux pour perdre un temps fou à ne pas comprendre pourquoi le programme ne fonctionne pas comme on le souhaite
      Il est préférable de laisser remonter l'exception (quitte à l'englober dans une RuntimeException).
    • Il faut faire un next() sur le ResultSet.
    • Il faut utiliser des PreparedStatement pour éviter les injections SQL
    • Et tant qu'à faire respecter les règles de nommages et d'encapsulation...



    Bref cela devrait plutôt ressembler à ceci :
    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
    public static boolean verifierIdentification(CIdentificationFlash ident)
    		throws SQLException {
     
    	Connection conn = getConnection();
    	try {
    		PreparedStatement pstmt = conn
    				.prepareStatement("SELECT 1 FROM table_users u WHERE u.user_id= ? AND u.user_passwd= ? Limit 1");
    		try {
    			pstmt.setInt(1, ident.getUserId());
    			pstmt.setString(2, ident.getPassword());
     
    			ResultSet rs = pstmt.executeQuery();
    			try {
    				if (rs.next())
    					return true;
    			} finally {
    				rs.close();
    			}
    		} finally {
    			pstmt.close();
    		}
    	} finally {
    		conn.close();
    	}
    	return false;
    }

    a++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 79
    Par défaut
    , merci pour la leçon de précision, je vais essayer de programmer dans ce sens

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

Discussions similaires

  1. message d'alerte sous excel
    Par kivala dans le forum Excel
    Réponses: 1
    Dernier message: 17/10/2005, 12h56
  2. Message d'alerte
    Par cciocc dans le forum ASP
    Réponses: 8
    Dernier message: 12/05/2005, 10h34
  3. Message d'alerte
    Par pmboutteau dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/03/2005, 11h28
  4. Boite de message d'alerte
    Par JustinT dans le forum ASP
    Réponses: 5
    Dernier message: 27/05/2004, 23h46
  5. Réponses: 9
    Dernier message: 24/03/2004, 12h15

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