andoid
Messages postés106Date d'inscriptionsamedi 31 mars 2012StatutMembreDernière intervention16 juin 2013
-
16 juin 2013 à 11:44
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020
-
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.
A voir également:
Exception of type system.outofmemoryexception was thrown
cs_Palex
Messages postés31Date d'inscriptionmardi 5 novembre 2002StatutMembreDernière intervention16 juin 2013 16 juin 2013 à 15:49
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