Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1272 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  type d'une exception

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

type d'une exception

n°352250
SoWhatIn22
Posté le 04-04-2003 à 08:43:36  profilanswer
 

Bonjour,
 
 
Ma question concerne la détermination du type d'une exception. Supposons que je link mon programme avec une librairie statique que je ne peux pas modifier. Afin de ne pas planter lamentablement à l'execution, je me dis que je voudrais catcher des exceptions possibles.
Si l'exception est du à une division par 0 ou par une mauvaise utilisation d'un pointeur nul, on peut tout à fait penser qu'il est justifié de continuer le programme une fois l'erreur détéctée. Par contre, si le code dans lequel se produit l'erreur ne fais pas explicement un throw d'une exception comme std::runtime_exception, comment connaitre le type d'exception.
 
En pratique, je fais:
 

Code :
  1. try
  2.    {       
  3.         malibrariecall( mes_arguments, ... );
  4.    }
  5.    catch( std::runtime_error & e )
  6.    {
  7.         //... bla bla bla
  8.    }
  9.    catch( std::exception & e )
  10.    {
  11.         //... bla bla bla
  12.    }
  13.    catch( ... )
  14.    {
  15.         // si passe ici, c'est que je ne connais pas le
  16.         // type de l'exception que je traite
  17.         //... bla bla bla
  18.    }


 
Si le code dans la librarie fais une division par 0, alors l'exception qui est catchée n'est pas une eception standard. Peut  on savoir de quel type d'exception il s'agit?
 
Merci.

mood
Publicité
Posté le 04-04-2003 à 08:43:36  profilanswer
 

n°353018
SoWhatIn22
Posté le 04-04-2003 à 16:04:58  profilanswer
 

Je me réponds à moi même:
 
j'ai l'impression que sous unix, le seul moyen que j'ai est d'utiliser les signaux ou les fonctions du genre setjmp. Une exception de type erreur arithmétique semble ne pas générer une exception au sens c++ du terme, si bien qu'il n'est pas possible de catcher quoi que ce soit... C'est fort dommage :(
 
sous windows, au contraire, une exception 'system' est gérée en temps qu'exception C++. De plus il semble que l'on peut s'en sortir avec la fonction _set_se_translator qui permet de traiter l'exception, par exemple en regardant le code de l'exception et en faisant alors un throw d'un type connu. Cela me permet de catcher une exception si une fonction effectue une division par zéro et de continuer. Il semblerait par contre que ce traitement d'exception system doive être initialisé pour chaque thread du processus.
 
 
Je cherche donc le moyen, sous linux/unix, de faire comme sous windows: pouvoir intercepter une exception en faisant un try/catch lors de l'appel de la fonction plutôt que d'intercepter un signal.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  type d'une exception

 

Sujets relatifs
retrouver le type d'une variablecomment effectuer le contrôle du type d'un champ en temps réel ? merci
Division par zéro en Java, exception non catchée ?erreur execution 3464: type de données incompatibles dans l'expression
comment baisser le timeout d'une exception??Type Mine
Petite question technique sur PowerBuilder (data type)Un controle de type liste ou grille editable ?
[MYSQL]Fonctionnnement du type DECIMAL dans une base MySQLTransfert SGDB - SGDB d'un autre type
Plus de sujets relatifs à : type d'une exception


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR