IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Exceptions [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut Exceptions
    bonjour!

    voici un bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            ...
            try{
    	$query="SELECT * FROM fee.member_list WHERE nick=:chaine limit 1;";
    	$result=$dbf->prepare($query);
    	$result_tag=$result->execute(array(':chaine'=>addslashes($string)));
    	if (!$result_tag)
    	throw new BDDexception(2);
    	...	
    	}
    	catch(BDDexception $e){
    	$e->showpage();
    	}
    Le but de mon code est d'attrapé une exception si la requete SQL n'est pas éxécutée.
    si je met un "a" avant le SELECT pour provoquer une erreur voici ce que je recoit de PHP comme message d'erreur :

    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'aSELECT * FROM fee.member_list WHERE nick='c' limit 1' at line 1' in D:\serveur_local\wamp\www\fee\php\verif_inscrip_index_excep.php:37 Stack trace: #0 D:\serveur_local\wamp\www\fee\php\verif_inscrip_index_excep.php(37): PDOStatement->execute(Array) #1 {main} thrown in D:\serveur_local\wamp\www\fee\php\verif_inscrip_index_excep.php on line 37

    J'ai remarqué aussi que si je rajoute un autre catch comme celui la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    catch(exception $e){
    	}
    Ca a l'air de fonctionné sans que je fasse un test sur la requete et ca utilise la classe exception alors que je veux utiliser la classe "BDDexception"

    Je ne comprend pas et ne maitrise pas ce comportement de l'exception.

    Pouvez vous m'éclairer SVP ?

    merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Avec une gestion d'erreur par exception, PDO lève lui-même les exceptions. Elles seront de type PDOException, ce n'est pas négociable. Si vous souhaitez vraiment en lever une d'une autre classe, il faudrait retourner dans un mode d'erreur classique, tester les valeurs de retour, et lever ou non votre propre exception sinon, éventuellement [suivant les cas], attraper les PDOException pour lever la votre. C'est certainement lourd pour pas grand chose.

    Quant au fait qu'il y a interception avec un catch sur Exception, c'est normal, puisque c'est la - une en fait - classe parente de ces exceptions (PDOException et la votre - c'est de la POO, au besoin : les exceptions en PHP 5).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut ok...
    Donc je ne peux pas "forcer" la levée d'une exception sur une classe dérivée de la classe PDOexception c'est bien ca??

    Du coup pour gérer les éventuelles "exception" il est préférable de le faire via la gestion par erreur "classique" par test des valeurs de retour?

    Ai je bien compris?

    Pourquoi le message d'erreur sinon?

    Merci a vous!


  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par salsabouge Voir le message
    Donc je ne peux pas "forcer" la levée d'une exception sur une classe dérivée de la classe PDOexception c'est bien ca??
    Si mais indirectement, dérivée ou non d'ailleurs. C'était le sens de ma précédente réponse.

    Citation Envoyé par salsabouge Voir le message
    Du coup pour gérer les éventuelles "exception" il est préférable de le faire via la gestion par erreur "classique" par test des valeurs de retour?
    Si par exception est sous-entendu erreur liée à PDO donc au SGBD, non. Personnellement, je préfère les exceptions (PDOException) c'est beaucoup moins lourd/répétitif de gérer de manière commune les erreurs du SGBD par un bloc catch que de s'amuser à tester chaque valeur retournée pour ensuite la gérer, même avec une fonction. Après, tout dépend des besoins de chacun, de son but et de ses goûts. Cela dit, j'ai déjà vu un cas d'erreur (bien que non critique) où aucune exception n'était levée et la valeur retournée était fausse (pilote MySQL sur un champ BLOB de taille insuffisante).

    Par ailleurs, ne pas oublier que le constructeur [PDO], lève, en cas d'erreur, quoiqu'il arrive une PDOException.

    Citation Envoyé par salsabouge Voir le message
    Pourquoi le message d'erreur sinon?
    C'est le comportement par défaut de PHP et ce qui se produit quand une exception n'est pas gérée/attrapée.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut je comprends pas tout...
    Comment faire alors pour que lorsque j'ai un problème de requête comme cité dans mon premier message pour que l'exception attrapée soit BDDexception et non PDOexception?

    Merci.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Si c'est ce que vous voulez :
    • intercepter l'exception PDOException pour en lever une autre :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      <?php
      class BDDException extends /*PDO*/Exception {}
       
      class MyPDO extends PDO {
          public function __construct() {
              try {
                  call_user_func_array(array(get_parent_class(), __FUNCTION__), func_get_args());
              } catch (PDOException $e) {
                  throw new BDDException($e->getMessage(), $e->getCode()/*, $e*/);
              }
              parent::setAttribute(self::ATTR_ERRMODE, self::ERRMODE_EXCEPTION);
          }
       
          public function setAttribute($attribute, $value) {
              if ($attribute == self::ATTR_ERRMODE) {
                  throw new Exception("Modification interdite de l'attribut ATTR_ERRMODE");
              }
              return call_user_func_array(array(get_parent_class(), __FUNCTION__), func_get_args());
          }
       
          public function query($statement) {
              try {
                  return call_user_func_array(array(get_parent_class(), __FUNCTION__), func_get_args());
              } catch (PDOException $e) {
                  throw new BDDException($e->getMessage(), $e->getCode()/*, $e*/);
              }
          }
      }
       
      try {
          $dbh = new MyPDO(DSN, LOGIN, MOT_DE_PASSE);
          $dbh->query('une requête invalide');
      } catch (/*BDD*/Exception $e) {
          die(sprintf("%s dans %s à la ligne %d : %s", get_class($e), $e->getFile(), $e->getLine(), $e->getMessage()));
      }
      À vraiment éviter puisque ça dénature de manière plus ou moins conséquente l'exception d'origine : ça pourrait aller jusqu'à fausser les débogages (exceptions antérieures non conservées notamment - c'est le cas ci-dessus).
    • conserver une gestion par erreur, et suivant la valeur retournée par la méthode, on lève sa propre exception :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      <?php
      class BDDException extends /*PDO*/Exception {}
       
      class MyPDOBis extends PDO {
          public function __construct() {
              try {
                  call_user_func_array(array(get_parent_class(), __FUNCTION__), func_get_args());
              } catch (PDOException $e) {
                  throw new BDDException($e->getMessage(), $e->getCode()/*, $e*/);
              }
              //parent::setAttribute(self::ATTR_ERRMODE, self::ERRMODE_SILENT); // c'est le mode par défaut
          }
       
          public function setAttribute($attribute, $value) {
              if ($attribute == self::ATTR_ERRMODE) {
                  throw new Exception("Modification interdite de l'attribut ATTR_ERRMODE");
              }
              return call_user_func_array(array(get_parent_class(), __FUNCTION__), func_get_args());
          }
       
          public function query($statement) {
              if (!$ret = call_user_func_array(array(get_parent_class(), __FUNCTION__), func_get_args())) {
                  list(, , $msg) = $this->errorInfo();
                  throw new BDDException($msg);
              }
              return $ret;
          }
      }
       
      try {
          $dbh = new MyPDOBis(DSN, LOGIN, MOT_DE_PASSE);
          $dbh->query('une requête invalide');
      } catch (/*BDD*/Exception $e) {
          die(sprintf("%s dans %s à la ligne %d : %s", get_class($e), $e->getFile(), $e->getLine(), $e->getMessage()));
      }

    (c'est purement illustratif)

    Pourquoi ce besoin ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut je ne sais pas...
    Je vais examiner ce code.

    Merci beaucoup!!


  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut pas compris
    Bonjour,

    Pouvez vous detailler cette partie de code que je n'ai pas compris.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     public function query($statement) {
            if (!$ret = call_user_func_array(array(get_parent_class(), __FUNCTION__), func_get_args())) {
                list(, , $msg) = $this->errorInfo();
                throw new BDDException($msg);
            }
            return $ret;
        }
    merci pour votre aide.


  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!$ret = call_user_func_array(array(get_parent_class(), __FUNCTION__), func_get_args())) {
    C'est une émulation de super d'autres langages (Java par exemple) qui n'existe pas en PHP pour appeler la méthode du même nom de la classe parent. Une écriture classique et compatible PHP < 5.3 serait d'utiliser le mot-clé parent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!$ret = parent::query($statement)) {
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list(, , $msg) = $this->errorInfo();
    La "fonction" list permet de créer des variables à partir de celles d'un tableau numériquement indexé. On sait que la méthode errorInfo retourne un tableau tel que :
    Indice 0 : code erreur SQLSTATE (un identifiant alphanumérique de cinq caractères défini dans le standard ANSI SQL).
    Indice 1 : code erreur spécifique au driver.
    Indice 2 : message d'erreur spécifique au driver.
    On affecte donc ici à la variable $msg la valeur d'index 2 du tableau que renvoie la méthode errorInfo (puisqu'en PHP on ne peut le faire directement : $this->errorInfo()[2]). Les autres valeurs du tableau étant ignorées (paramètre "vide" pour list).

    Est-ce bon ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut ok!
    merci j'ai tout compris,

    Je vais tester ca aujourd'hui et je vous tient informé.

    Dernière question comme vous me semblez "calé" sur les exceptions.

    Les exceptions semblent finalement faire des "tests" de validité via les blocs try/catch ; cela ne nuit-il pas a la performance d'un programme que d'utiliser les exceptions plutôt que les erreurs classiques?

    merci


  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Difficile à dire et à comparer surtout. D'une manière générale, la programmation objet a certainement un léger impact négatif mais elle permet d'avoir un code structuré plus facile à maintenir (avec d'autres facilités/contraintes).

    Les exceptions permettent de mettre en commun une même gestion des erreurs quand une ou plusieurs instructions sont susceptibles d'en lever une dans des circonstances +/- identiques. En résulte donc un code plus lisible qu'un basé sur les erreurs où il faut tester individuellement chaque retour. Mais attention à ne pas confondre erreurs et exceptions : il n'y a que PDO qui permet ce choix. Faites-vous même l'essai avec PDO : une gestion d'erreur par erreurs se montre vite "lassante".

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut erreur.
    Avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php
    //*************************
    // Classes pour traitement des erreurs
    //*************************
    class BDDException extends Exception {}
     
    class MyPDO extends PDO {
        public function __construct($msg=NULL,$code=0) {
            try {
                parent::__construct($msg,$code);
            	} 
    		catch (Exception $e) {
                throw new BDDException($e->getMessage(), $e->getCode());
            					}
        }
     
        public function setAttribute($attribute, $value) {
            if ($attribute == self::ATTR_ERRMODE) {
                throw new Exception("Modification interdite de l'attribut ATTR_ERRMODE");
            }
            return parent::setAttribute($attribute, $value);
        }
     
        public function query($statement) {
            if (!$ret = parent::query($statement)) {
                list(, , $msg) = $this->errorInfo();
                throw new BDDException($msg);
            }
            return $ret;
        }
    }
     
    //*************************
    // Connexion to database   
    //*************************
    define('USER','root');
    define('PW','');
    define('CANAL','mysql:host=localhost;dbname=feesik');
     
    try{
    $dbf=new myPDO (CANAL,USER,PW);
    }catch (Exception $e){
    header("location:http://localhost/fee/pages/erreurs/page_erreur_inscription.php?err=pas de connexion BDD");
    die();
    }
     
    $dbf->setAttribute(myPDO::ATTR_ERRMODE,myPDO::ERRMODE_EXCEPTION);
     
    ?>
    Je met la dernière ligne pour tester la fonction setAttribute et j'ai l'erreur suivante:

    Fatal error: Uncaught exception 'Exception' with message 'Modification interdite de l'attribut ATTR_ERRMODE' in D:\serveur_local\wamp\www\fee\php\connect.inc.php:19 Stack trace: #0 D:\serveur_local\wamp\www\fee\php\connect.inc.php(47): MyPDO->setAttribute(3, 2) #1 {main} thrown in D:\serveur_local\wamp\www\fee\php\connect.inc.php on line 19

    ou est l'erreur?

    Merci.

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il faut savoir ce que vous voulez : il n'y a pas d'erreur ici, c'est moi qui lève cette exception pour ne pas que l'attribut PDO::ATTR_ERRMODE puisse être modifié (cf redéfinition de la méthode setAttribute) donc que le fonctionnement au niveau des erreurs de la classe ne puisse pas être affecté puisque vous vouliez lever votre propre exception. L'ensemble sinon n'est plus cohérent ou alors il faut redéfinir lors de chaque requête (voir autres) cet attribut de façon à en gérer les erreurs comme vous le souhaitez (ce qui n'a théoriquement aucun intérêt si toutes les méthodes PDO sont redéfinies pour avoir le même comportement).

    Bref, on tourne en rond et on en revient à ma question de départ : quel est l'intérêt pour vous de lever une exception Y plutôt que X ?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut Oups...
    Bonjour,

    on a du mal se comprendre,

    Je sais qu'il n'y a pas d'erreur mais justement je modifie l'attribue ATTR_ERRMODE pour verifier le comportement du script et au lieu de lever l'exception 'Exception' avec le message : 'Modification interdite de l'attribut ATTR_ERRMODE', PHP me renvoie le message suivant :

    Fatal error: Uncaught exception 'Exception' with message 'Modification interdite de l'attribut ATTR_ERRMODE' in D:\serveur_local\wamp\www\fee\php\connect.inc.php:19 Stack trace: #0 D:\serveur_local\wamp\www\fee\php\connect.inc.php(47): MyPDO->setAttribute(3, 2) #1 {main} thrown in D:\serveur_local\wamp\www\fee\php\connect.inc.php on line 19

    C'est cela que je ne comprend pas.

    merci
    .


  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Je l'ai déjà dit : il n'y a rien d'anormal ici. C'est bien une exception de type Exception qui est levée mais étant donné que vous ne la gérez pas (try/catch) c'est PHP qui la traite et la transforme en une erreur fatale.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut merci
    Ca y est j'ai tout pigé!

    J'ai décortiqué le script et j'ai tout compris.

    Ca fonctionne correctement.

    Ceci etant dit, j'ai une dernière question (pour pas changer)

    L'utilisation de requêtes préparées n'est elle pas possible avec PDO?

    Je m'explique, quand j'ecris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$query="SELECT * FROM member_list WHERE nick=:chaine limit 1;"; 
    	$result=$dbf->prepare($query);
    	$exec=$result->execute(array(':chaine'=>addslashes($string)));
    Une exception est levée (bloc catch) alors que sans préparation préalable, ca passe niquel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	$query="SELECT * FROM member_list WHERE nick='xxx' limit 1;"; 
    	$result=$dbf->query($query);
    merci encore

    .

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Quelle est l'erreur ?

    Mais pourquoi addslashes la donnée ? Ce n'est pas "portable" donc va à l'encontre du principe/but même de PDO et est totalement inutile puisque cette opération est déjà réalisée à un autre niveau (c'est là tout l'intérêt justement des requêtes préparées).

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut désolé!
    Je me suis aperçu moi même de cette erreur apres l'envoi du message , effectivement le addslashes ne sert a rien car la préparation des requêtes assurent la vérifications des données.

    Par contre dans cette partie de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    define('USER','root');
    define('PW','mot de passe erroné');// mot de passe erronée = connexion possible
    define('CANAL','mysql:host=localhost;dbname=fee');
     
    try{
    $dbf=new MyPDO (CANAL,USER,PW);
    }catch (Exception $e){
    header("location:http://localhost/fee/pages/erreurs/page_erreur_inscription.php?err=Connexion impossible a la base de données.");
    die();
    }
    même si je met un mauvais mot de passe lors de la connexion à la BDD , le bloc catch n'est pas exécuté et le programme continue comme si la connexion avait réussie.

    Par contre si je change "myPDO" par "PDO", ca fonctionne niquel.

    Comment cela se fait??

    Merci.

  19. #19
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Vous pouvez redonner le code de votre constructeur ?

    Par contre, si celui donné au-dessus n'a pas été corrigé : le mot de passe est ignoré puisque votre constructeur ne correspond pas à celui de PDO. Il ressemble plutôt à celui d'une Exception ...

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Par défaut constructeur
    j'ai essayer avec ce constructeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public function __construct($msg=NULL,$code=0) {	
    try {
                parent::__construct($msg,$code);
            } catch (Exception $e) {
                throw new BDDException($e->getMessage(), $e->getCode());
            }
    		parent::setAttribute(self::ATTR_ERRMODE, self::ERRMODE_EXCEPTION);
    }
    et également avec celui la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public function __construct($msg=NULL,$code=0) {
                parent::__construct($msg,$code);
    			parent::setAttribute(self::ATTR_ERRMODE, self::ERRMODE_EXCEPTION);
    		}
    Aucun ne fonctionne je n'ai rien trouvé qui puisse m'aider sur la doc PHP.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  2. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35
  3. Réponses: 3
    Dernier message: 01/11/2002, 14h30
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo