utilisation d'exception (try catch)

utilisation d'exception (try catch) - Java - Programmation

Marsh Posté le 11-07-2005 à 11:43:32    

Bonjour
 
Voila, je debute en progra et j'ai un probleme avec l'utilisation des exceptions.
 
Quand j'initialise une variable dans un try{...}, le compilateur (j'utilise javac) me dit que la dite variable n'est pas initialisé; et si je vire la gestion de l'exeption, le compilateur n'est pas content.
 
En faite, j'aimerais savoir pourquoi le compilateur ne "voit" pas l'initialisation de la variable si elle est dans un try?
 
Merci

Reply

Marsh Posté le 11-07-2005 à 11:43:32   

Reply

Marsh Posté le 11-07-2005 à 11:46:45    

met ton bout de code ou tu fais ca

Reply

Marsh Posté le 11-07-2005 à 11:55:02    

exemple:
 
(C'est pour la gestion du port serie)
 

Code :
  1. CommPortIdentifier portId; //declaration de portId
  2. try{
  3. portId=CommPortIdentifier.getPortIdentifier("COM1" );//initialisation de portId
  4. }catch(NoSuchPortExection e){
  5. //traitement de l'exeption
  6. }


 
Et plus tard, quand j'utilise portId, le compilateur me dit qu'il n'a pas été initialisé.

Reply

Marsh Posté le 11-07-2005 à 12:14:24    

"might not have been initialized" => Ca se pourrait qu'elle soit pas initializée !
 
Solution bourrine :  
 

Code :
  1. CommPortIdentifier portId = null; //declaration de portId
  2.      try{
  3.      portId=CommPortIdentifier.getPortIdentifier("COM1" );//initialisation de portId
  4.      }catch(NoSuchPortExection e){
  5.      //traitement de l'exeption
  6.      }


 
Et voilà plus d'erreurs à la compile :)

Reply

Marsh Posté le 11-07-2005 à 12:26:38    

bourine mais fonctionnelle.
Merci
 
Sinon, question d'ordre generale: une init dans un try n'est jamais prise en compte par le compilateur?
 

Reply

Marsh Posté le 11-07-2005 à 12:43:16    

c'est surtout que ce qu'il y a dans un try est par définition susceptible de ne pas être éxécuté...
et donc si le compilo laissait passer, ça serait la m.... le jour ou l'exception arrive :)


Message édité par victorus_ecl le 11-07-2005 à 12:45:18
Reply

Marsh Posté le 11-07-2005 à 12:50:14    

Si bien sur ...
Moi si j'init une var dans le bloc try, toutes les instructions d'aprés SONT dans le bloc try.

Reply

Marsh Posté le 11-07-2005 à 14:28:33    

Mais est-ce que certaine API oblige que l'on utilise les exeption? En faite, quand de je prenais le code si-dessu sans le try et catch  

Code :
  1. CommPortIdentifier portId; //declaration de portId
  2. portId=CommPortIdentifier.getPortIdentifier("COM1" );//initialisation de portId


 
la compilation ne se faisait pas.

Citation :


TestComm.java:14: unreported exception javax.comm.NoSuchPortException; must be caught or declared to be thrown


 

Reply

Marsh Posté le 11-07-2005 à 14:38:31    

blaise_laporte a écrit :

exemple:
 
(C'est pour la gestion du port serie)
 

Code :
  1. CommPortIdentifier portId; //declaration de portId
  2. try{
  3. portId=CommPortIdentifier.getPortIdentifier("COM1" );//initialisation de portId
  4. //si tu utilises le portId ici il ne doit pas gueler
  5. }catch(NoSuchPortExection e){
  6. //traitement de l'exeption
  7. }
  8. //si tu utilise ton portId ici il est pas forcement initialisé  
  9. //parce que justement la methode getPortIdentifier() peut jeter une exception et donc portId est pas initialiser


 
Et plus tard, quand j'utilise portId, le compilateur me dit qu'il n'a pas été initialisé.


Reply

Marsh Posté le 11-07-2005 à 14:40:12    

blaise_laporte a écrit :

Mais est-ce que certaine API oblige que l'on utilise les exeption? En faite, quand de je prenais le code si-dessu sans le try et catch  

Code :
  1. CommPortIdentifier portId; //declaration de portId
  2. portId=CommPortIdentifier.getPortIdentifier("COM1" );//initialisation de portId


 
la compilation ne se faisait pas.

Citation :


TestComm.java:14: unreported exception javax.comm.NoSuchPortException; must be caught or declared to be thrown



normal, getPortIdentifier jete une excpetion NoSuchPortException, tu es donc oblige de la traiter (soit avec try catch soit la jeter a ton tour plus loin)

Reply

Marsh Posté le 11-07-2005 à 14:40:12   

Reply

Marsh Posté le 11-07-2005 à 14:41:35    

Ok.
 
Va faloir que je me trouve un tutorial sur les exceptions :D.
 
Merci pour toute vos reponse.


Message édité par blaise_laporte le 11-07-2005 à 14:41:48
Reply

Marsh Posté le 11-07-2005 à 17:22:36    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed