Catch (...) et violation d'accès

Catch (...) et violation d'accès - C++ - Programmation

Marsh Posté le 21-02-2007 à 10:25:34    

Hello tout le monde.
 
Question aux pros du C++
 
Je découvre quelque chose qui me laisse pantois (et pose un sérieux problème sur un code existant que je reprend en main)
 
Voilà l'objet du délit:
 
Compilo : Visual C++ 6.0 (SP 2)
 

Code :
  1. try
  2. {
  3. int *ptr = 0;
  4. cout << "affectation d'un pointeur nul" << endl;
  5. *ptr = 0; // affecte la valeur 0 à un pointeur NULL -> violation d'accès
  6. }
  7. catch(...)
  8. {
  9. cout << "exception!" << endl;
  10. }


 
Sortie:
 

Citation :

affectation d'un pointeur nul
exception!


 
Questions:
 
Pourquoi je capture l'exception? De quel type est elle (j'en ai essayé un bon paquet y compris les types de base)? Comment je fais pour capturer la violation d'accès ou une autre erreur machine (parce que je tiens que la violation d'accès en soit réellement une)?
 
Je vous laisse imaginer les problèmes soulevés par ce code répandu dans l'ensemble du programme...


Message édité par slash33 le 21-02-2007 à 10:27:08
Reply

Marsh Posté le 21-02-2007 à 10:25:34   

Reply

Marsh Posté le 21-02-2007 à 10:29:10    

int *ptr; ne réserve pas la mémoire , si ?

Reply

Marsh Posté le 21-02-2007 à 10:52:25    

Comprend pas l'objet de la question...
 
Sinon le code donné c'est pour l'exemple.

Reply

Marsh Posté le 21-02-2007 à 13:30:26    

De mieux en mieux...
 
Je rentre dans le bloc catch(...) en debug et pas en release.
 
Well done!

Reply

Marsh Posté le 22-02-2007 à 08:14:19    

Ca aurait un rapport avec l'option de compilation /EH.

Reply

Marsh Posté le 23-02-2007 à 00:14:25    

je pense que tu as du lire ceci :
http://msdn2.microsoft.com/fr-fr/l [...] S.80).aspx

Reply

Sujets relatifs:

Leave a Replay

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