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 :

Try catch, exécution de code hors d'exception ?


Sujet :

avec Java

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Points : 156
    Points
    156
    Par défaut Try catch, exécution de code hors d'exception ?
    Bonjour,

    J'ai cette méthode qui sert à insérer un symbole dans une grille qui seras utilisée dans un jeu d'OXO.

    Comment fais t-on pour exécuter du code lorsqu'il n'y a pas eu d'exception ?

    Je pensais à utiliser un bool/flag mais il dois surement exister une approche plus élégante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	public void setGrille( int x, int y, char gameSymbol )
    	{
    		try
    		{
    			grille[x-1][y-1] = gameSymbol;
    		}
    		catch( ArrayIndexOutOfBoundsException a )
    		{
    			System.out.println("Les coordonnées données sont en dehors des limites de la grille");
    		}
    	}
    Développeur en devenir.

    A la recherche de toute source approfondissant Merise, UML, Java, l'objet, les design patterns hors GOF et le développement en général.

    Recherche également des informations sur les techniques de développement et les bonnes pratiques en terme de programmation en entreprise.

    "On en apprends beaucoup plus par la confrontation que par la conciliation"

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Je ne comprends ni ton problème, ni ta question
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    J'avoue avoir également un peu de mal à comprendre la question...

    Mais si je suis bien ton besoin, tu n'as aucun test à faire: il suffit de mettre ton code au bon endroit. Si une exception s'est produite sur la première ligne du try, tu "sautes" directement au catch. Donc le code placé après cette ligne, il ne sera exécuté QUE lorsque l'exception n'a été levée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void setGrille( int x, int y, char gameSymbol ){
    	try {
    		grille[x-1][y-1] = gameSymbol;
    		// ICI LE CODE EXECUTE QUAND IL N'Y A PAS EU EXCEPTION
    	} catch( ArrayIndexOutOfBoundsException a ) {
    		System.out.println("Les coordonnées données sont en dehors des limites de la grille");
    	}
    }
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Points : 156
    Points
    156
    Par défaut
    Bon, je vais reformuler.

    J'oeuvre actuellement sur un exercice pour récréer un jeu OXO sur une page web.

    Entre autres, j'ai une classe grille avec une matrice de char. Cette matrice va servir à stocker des 'X' ou de 'O' selon le choix d'un utilisateur.

    Pour montrer que j'ai compris certaines notions, j'utilise une structure try()...catch() au lieu d'un if() pour contrôler la validité des coordonnées où un utilisateur souhaite placer son "pion".

    J'aimerais incrémenter une variable au fur et à mesure qu'une partie avance. Elle serviras à indiquer si une partie a pris fin ou pas (si >= au nombre de cases, fin de partie).

    Evidemment, cette variable ne devrais pas être incrémentée lorsqu'il un ArrayIndexOutOfBoundsException car cela signifie qu'un "pion" n'as pu être placé.
    Développeur en devenir.

    A la recherche de toute source approfondissant Merise, UML, Java, l'objet, les design patterns hors GOF et le développement en général.

    Recherche également des informations sur les techniques de développement et les bonnes pratiques en terme de programmation en entreprise.

    "On en apprends beaucoup plus par la confrontation que par la conciliation"

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par CyberChouan Voir le message
    Mais si je suis bien ton besoin, tu n'as aucun test à faire: il suffit de mettre ton code au bon endroit. Si une exception s'est produite sur la première ligne du try, tu "sautes" directement au catch. Donc le code placé après cette ligne, il ne sera exécuté QUE lorsque l'exception n'a été levée.
    Merci pour cette explication.

    Donc, si j'ai bien compris, il suffit qu'il y a une exception quelconque lors de l'exécution du bloc try pour que le programme passe directement au catch.

    Il me viens une autre question. Ce n'est pas nécessaire dans ce cas de figure mais comment fais t-on pour traiter plusieurs types d'exception ? Car je suppose que seule la première occurence d'une exception est traitée.
    Développeur en devenir.

    A la recherche de toute source approfondissant Merise, UML, Java, l'objet, les design patterns hors GOF et le développement en général.

    Recherche également des informations sur les techniques de développement et les bonnes pratiques en terme de programmation en entreprise.

    "On en apprends beaucoup plus par la confrontation que par la conciliation"

  6. #6
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Effectivement:
    1/ Une exception interrompt les traitements:
    - si elle est rattrapée, le contenu du bloc catch correspondant est immédiatement exécuté, puis la suite du programme (le code situé après les blocs catch/finally) s'exécute
    - si elle n'est pas rattrapée, elle remonte immédiatement au niveau de la méthode appelante (qui devra soit la gérer, soit la remonter à son tour)

    2/ pour traiter plusieurs types d'exceptions, on utilise plusieurs blocs catch:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try {
       // code
    } catch (TypeException1 e1) {
       // code
    } catch (TypeException2 e2) {
       // code
    }
    Je te suggère de relire à ce sujet les tutoriaux de base du développement java: les exceptions y sont généralement traitées: http://java.developpez.com/cours/
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Points : 156
    Points
    156
    Par défaut
    Ok. Je suppose que ce serais une bonne idée de placer un dernier catch pour gérer toute exception dont on a pas tenu compte.

    Sinon, revoir cette matière ne me feras pas de tort. J'avoue que j'ai eu du mal à saisir le try catch au début. Son fonctionnement rappelle un peu l'instruction continue, sauf que le saut est implicite dans le sens où une interruption a lieu à l'exécution de chaque instruction dans le bloc try. Je suppose que cela est possible grâce au fait que le java s'execute dans une machine virtuelle.

    Merci pour tes explications.
    Développeur en devenir.

    A la recherche de toute source approfondissant Merise, UML, Java, l'objet, les design patterns hors GOF et le développement en général.

    Recherche également des informations sur les techniques de développement et les bonnes pratiques en terme de programmation en entreprise.

    "On en apprends beaucoup plus par la confrontation que par la conciliation"

  8. #8
    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
    Citation Envoyé par Jimalexp Voir le message
    Ok. Je suppose que ce serais une bonne idée de placer un dernier catch pour gérer toute exception dont on a pas tenu compte.
    Hum... Pas vraiment !


    Si tu n'as pas prévu l'exception tu ne pourras pas proposer de solution alternative, et cela risque de masquer un bug !!!!



    Dans ton exemple d'ailleurs je ne gèrerais même pas l'exception : s'il s'agit d'un jeu avec une UI graphique alors les input sont limité et il ne devrait pas y avoir d'erreur. Sauf bug (et dans ce cas là il est préférable de voir remonter une exception plutôt qu'un affichage qui risque de passer inaperçu !

    a++

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

Discussions similaires

  1. Avis de développeur sur mon code - Exception try/catch/finally
    Par psykoprof dans le forum Débuter avec Java
    Réponses: 15
    Dernier message: 02/06/2010, 00h01
  2. Code erreur d'un Try, Catch (exception e)
    Par davelop dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 06/10/2008, 19h00
  3. Problème try-catch dans mon code
    Par little pepito dans le forum Langage
    Réponses: 7
    Dernier message: 11/06/2007, 12h22
  4. [Système] Exception: try / catch
    Par canabral dans le forum Langage
    Réponses: 2
    Dernier message: 05/09/2006, 12h28
  5. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35

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