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

  FORUM HardWare.fr
  Programmation
  C++

  Borland => problème avec exceptions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Borland => problème avec exceptions

n°442914
haazheel
Posté le 29-06-2003 à 01:26:16  profilanswer
 

Qui peut me dire pourquoi ça ne marche pas? C'est tiré du cours de Christian Casteyde:
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. class erreur // Première exception possible, associée
  4. // à l?objet erreur.
  5. {
  6. public:
  7. int cause; // Entier spécifiant la cause de l?exception.
  8. // Le constructeur. Il appelle le constructeur de cause.
  9. erreur(int c) : cause(c) {}
  10. // Le constructeur de copie. Il est utilisé par le mécanisme
  11. // des exceptions :
  12. erreur(const erreur &source) : cause(source.cause) {}
  13. };
  14. class other {}; // Objet correspondant à toutes
  15. // les autres exceptions.
  16. int main(void)
  17. {
  18. int i; // Type de l?exception à générer.
  19. cout << "Tapez 0 pour générer une exception Erreur, "
  20. "1 pour une Entière :";
  21. cin >> i; // On va générer une des trois exceptions
  22. // possibles.
  23. cout << endl;
  24. try // Bloc où les exceptions sont prises en charge.
  25. {
  26. switch (i) // Selon le type d?exception désirée,
  27. {
  28. case 0:
  29. {
  30. erreur a(0);
  31. throw (a); // on lance l?objet correspondant
  32. // (ici, de classe erreur).
  33. // Cela interrompt le code. break est
  34. // donc inutile ici.
  35. }
  36. case 1:
  37. {
  38. int a=1;
  39. throw (a); // Exception de type entier.
  40. }
  41. default: // Si l?utilisateur n?a pas tapé 0 ou 1,
  42. {
  43. other c; // on crée l?objet c (type d?exception
  44. throw (c); // other) et on le lance.
  45. }
  46. }
  47. } // fin du bloc try. Les blocs catch suivent :
  48. catch (erreur &tmp) // Traitement de l?exception erreur ...
  49. { // (avec récupération de la cause).
  50. cout << "Erreur erreur ! (cause " << tmp.cause << " )" << endl;
  51. }
  52. catch (int tmp) // Traitement de l?exception int...
  53. {
  54. cout << "Erreur int ! (cause " << tmp << " )" << endl;
  55. }
  56. catch (...) // Traitement de toutes les autres
  57. { // exceptions (...).
  58. // On ne peut pas récupérer l?objet ici.
  59. cout << "Exception inattendue !" << endl;
  60. }
  61. return 0;


 
Je n'ai pas d'erreur à la compilation mais à l'exécution:
 

Citation :

Le projet Project1.exe a provoqué une classe d'exception int avec le message 'Adresse de l'objet exception : 0xA95D3A'.  Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.


 
Des idées?


---------------
Another .Net Blog
mood
Publicité
Posté le 29-06-2003 à 01:26:16  profilanswer
 

n°442971
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-06-2003 à 10:17:39  profilanswer
 

"Adresse de l'objet exception" ha ils l'ont bien traduit tiens [:ddr555]
 
Ça serait pas mal que tu dises sur quelle ligne ça plante :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°442987
Taz
bisounours-codeur
Posté le 29-06-2003 à 11:30:18  profilanswer
 

Code :
  1. #include <stdexcept>
  2. #include <iostream>
  3. using namespace std;
  4. int main()
  5. {
  6.   try
  7.     {
  8.       throw logic_error("hello" );
  9.     }
  10.   catch(const exception &e)
  11.     {
  12.       cerr << e.what() << endl;
  13.     }
  14.   catch(...)
  15.     {
  16.       cerr << "exception inattendu" << endl;
  17.     }
  18. }

je lui ai fait testé ça, ça plante aussi...

n°443339
haazheel
Posté le 29-06-2003 à 20:57:01  profilanswer
 

ça plante sur le throw


---------------
Another .Net Blog
n°443687
LetoII
Le dormeur doit se réveiller
Posté le 30-06-2003 à 08:51:32  profilanswer
 

C quoi que tu utilise C++ Builder? Si c le cas c tt à fait normal, par défaut ils choppe toute exception et te la signale, après tu peux continuer l'exécution normale de ton prog si l'exception est ratrapée par celui ci.


---------------
Le Tyran
n°443747
antp
Super Administrateur
Champion des excuses bidons
Posté le 30-06-2003 à 10:07:46  profilanswer
 

Tools -> Debuger, là y a une option pour ne pas s'arrêter sur les exceptions :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°444204
haazheel
Posté le 30-06-2003 à 15:50:18  profilanswer
 

ouais, j'ai vu ça...
 
Mais il y a deux options:
 
S'arrêter sur les exceptions Delphi
 
S'arrêter sur les exceptions C++
 
Je décoche les deux options ou seulement Delphi?


---------------
Another .Net Blog
n°444208
antp
Super Administrateur
Champion des excuses bidons
Posté le 30-06-2003 à 15:53:21  profilanswer
 

vu que tu fais des throw et non des raise, ce sont des exceptions C++ que tu fais :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°444209
LetoII
Le dormeur doit se réveiller
Posté le 30-06-2003 à 15:53:58  profilanswer
 

haazheel a écrit :

ouais, j'ai vu ça...
 
Mais il y a deux options:
 
S'arrêter sur les exceptions Delphi
 
S'arrêter sur les exceptions C++
 
Je décoche les deux options ou seulement Delphi?


 
Je dirais les deux, en même temps il te sufit d'appuyer sur F9 ou F8 pour que l'exécution de ton prog continue  [:spamafote]


---------------
Le Tyran
n°444212
haazheel
Posté le 30-06-2003 à 15:54:59  profilanswer
 

de toute manière j'ai décoché les deux options...
 
Comme ça je suis tranquille...


---------------
Another .Net Blog
mood
Publicité
Posté le 30-06-2003 à 15:54:59  profilanswer
 

n°444226
Taz
bisounours-codeur
Posté le 30-06-2003 à 16:04:53  profilanswer
 

LetoII a écrit :


 
Je dirais les deux, en même temps il te sufit d'appuyer sur F9 ou F8 pour que l'exécution de ton prog continue  [:spamafote]  

:heink: on doit pas avoir la meme utilisation des exceptions alors...

n°444237
LetoII
Le dormeur doit se réveiller
Posté le 30-06-2003 à 16:10:18  profilanswer
 

++Taz a écrit :

:heink: on doit pas avoir la meme utilisation des exceptions alors...


 
Je pense que si, mais en fait lorsque tu as une exceptino qui est lancée c++ builder arréte l'exécution du programme même si cette exception va être ratrapée par un bloc catch dasn el cadre du traitemetn d'erreur du dit programme. Il faut alors lui dire de continuer l'exécution du programme pour que celui ci puisse rattrapper l'exception et la traiter.
 
Par exemple:
 

Code :
  1. try
  2. {
  3.   throw MonException();
  4. }
  5. catch(MonException &e)
  6. {
  7.    cout << "C normal"<<endl;
  8. }


 
Va systématiquement vrovoquer la mise en pause de l'exécution alors qu'à priori le programme peut continuer à s'exécuter normalement.


Message édité par LetoII le 30-06-2003 à 16:12:10

---------------
Le Tyran
n°444238
chrisbk
-
Posté le 30-06-2003 à 16:11:33  profilanswer
 

LetoII a écrit :


 
Je pense que si, mais en fait lorsque tu as une exceptino qui est lancée c++ builder arréte l'exécution du programme même si cette exception va être ratrapée par un bloc catch dasn el cadre du traitemetn d'erreur du dit programme. Il faut alors lui dire de continuer l'exécution du programme pour que celui ci puisse rattrapper l'exceptino et la traiter.


 
ben c'est relou en diable, ca, quand meme :O

n°444240
LetoII
Le dormeur doit se réveiller
Posté le 30-06-2003 à 16:12:45  profilanswer
 

chrisbk a écrit :


 
ben c'est relou en diable, ca, quand meme :O


 
Bof, ça se paramétres aussi. [:spamafote]


---------------
Le Tyran

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

  Borland => problème avec exceptions

 

Sujets relatifs
Probleme d'exportation de constante membre[Eclipse] Développement de fragments de plugin (problème)
Problème avec une condition contenue dans une variableExpression Reguliere ... Où est le problème ?
Problème de pipe (grrrr)probleme de mise en page
Probleme d utilisation d une DLL externe[VC++] Problème étrange !
[FLASH] J'ai un petit problème de séquence ?[HTML/JS] Problème de Refresh
Plus de sujets relatifs à : Borland => problème avec exceptions


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