[Dcmlib] : try-catch apres new

Jean-Pierre ROUX jean-pierre.roux at creatis.insa-lyon.fr
Tue Apr 26 08:35:39 CEST 2005


At 18:23 -0400 25/04/05, Mathieu Malaterre wrote:

[...]

>
>Donc non: on ne fais pas de try catch. Le seul try catch en c++ qui 
>est possible c'est celui du 'new'.

C'est a *ce* cas que je pensais.
Tellement intoxique par le C que je n'ai jamais du ecrire qq chose comme :
gdcm::File f();
j'ai toujours ecrit
gdcm::File *f = new gdcm::File();
et ca m'iritais profondément que le pointeur ne soit pas NULL en cas d'echec...

J'avais considére que le try-catch etait la solution (meme si je n'en 
avais pas mis dans les tests :-(

Ca ne me choquerais pas de dire <<si vous utilisez gdcm et que vous 
tenez a tester les echecs dans les contructeurs, n'utilisez les 
contructeurs qu'avec 'new', et pas sur un objet declaré 
statiquement.>>

>Genre on atteint les limites physique de la machine et la ben oui 
>faut bien faire un traitement de derniere chance. Mais entre nous tu 
>ne peux pas demander a un util de faire des try catch de partout 
>dans son code.
>
>En revanche tu peux parfaitement faire:
>
>gdcm::Serie s =
>s.SetDirectory( "bla" );
>
>try
>  {
>  s.GetFirstSerie()
>  }
>catch
>  {
>   cerr << "Echec parce que:" << error.Print() ...
>  }
>
>dans la meme genre l'utilisateur devrait mettre un try/catch au 
>moment de l'ecriture:
>
>gdcm::FileHelper f
>
>try
>  f.Write()
>catch
>  cerr << "Echec"
>
>
>Entre parenthese je sais meme pas si c'est possible de mettre un try 
>catch sur la construction d'un objet: comment tu fais pour le 
>declarer:
>
>try
>{
>   gdcm::File f("");
>}
>catch
>{
>}
>
>f.GetImageData() -> echec du compilo
>
>-> on est sortie du scope , on n'a plus access a f. Ca veut dire que 
>ne peut plus faire d'objet sur la pile, a chq fois il faudrait faire 
>un pointeur puis affectation:
>
>gdcm::File *f;
>
>try
>{
>   f = new gdcm::File("");
>}
>catch
>{
>}

C'est pile ce que je voulais faire ...
Qu'est ce qu'il ya de choquant la dedans?
En C, chaque fois qu'on 'fabrique' un simili-objet avec une fonction 
d'allocation, on teste bien le pointeur ...
Si on veut tester l'echec dans le constructeur (par new), on n'a pas 
d'autre choix, non?

>
>DU DELIRE !
>

Ah, bon ?
JPRx

  Jean-Pierre ROUX
  UMR CNRS 5515-CREATIS
  Laboratoire de Radiologie Experimentale
  Hopital Cardiologique
  28 Avenue du Doyen LEPINE
  B.P. Lyon-Montchat
  69394 Lyon Cedex 03

  Tel      : (+33) 04 72 35 74 12
  Fax      : (+33) 04 72 68 49 16
  URL      : http://www.creatis.univ-lyon1.fr
  e-mail   : jpr at creatis.univ-lyon1.fr
								   




More information about the Dcmlib mailing list