Levée une exception [Résolu]

Messages postés
108
Date d'inscription
samedi 31 mars 2012
Statut
Membre
Dernière intervention
16 juin 2013
- - Dernière réponse : cs_Julien39
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 17 juin 2013 à 07:50
Bonjour
J'ai une hashmap ,r une méthode Park(int place, Car C) mon probléme est de lever une exception de type IllegalStateException quand la place est occupée.
voici la méthode:

public void Park ( int numPlace, Car C)
{

if (Garage.containsKey(numPlace))
{
try{}
catch(IllegalStateException e) {System.out.println("Place déjà occupée");}
}
else
Garage.put(numPlace, C);

}
quand je met dans le try Garage.put(numPlace, C); il écrase l'ancienne valeur et je veux pas qu'il le fasse c'est pourquoi j'ai rien mis à l'intérieur.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
108
Date d'inscription
samedi 31 mars 2012
Statut
Membre
Dernière intervention
16 juin 2013
3
Merci
merci j'ai réussi à résoudre mon pb

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 141 internautes nous ont dit merci ce mois-ci

Commenter la réponse de andoid
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
223
3
Merci
Salut,

Ce code n'a aucun sens :

try{} 
catch(IllegalStateException e) {System.out.println("Place déjà occupée");} 


Rien n'est exécuté donc cette exception ne sera pas levée, je pense que tu voulais utiliser un throw IllegalStateException ("Place déjà occupée");

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 141 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
31
Date d'inscription
mardi 5 novembre 2002
Statut
Membre
Dernière intervention
16 juin 2013
0
Merci
Salut

Moi j aurais plutot mis un le if(garage.contains..){
throw new PlaceOccupeException();
}else{
Garage.put(...)
}

Il faut que tu propage lexception a la methode appelante et que tu ajoutes le mot cle synchonized sur ta methode ou ta hashmap au cas ou 2 threads accederais a ta map en meme temps, car si 2 threads arrive dans ta methode en meme temps le garage.contains va repondre ok c libre et le garage.put qui arrivera en premier sera ecrase par le second et tu perdras une info.
Bon courage
PAM
Commenter la réponse de cs_Palex