Gestion des erreurs

La gestion des erreurs est implémentée via un protocole entre PDO et le code du driver de la base de données. Le code du driver de la base de données signale à PDO qu'une erreur est survenue via un retour d'échec (0) depuis n'importe quelles fonctions d'interface. Si un zéro est retourné, le champ error_code du bloc de contrôle approprié au contexte (soit le bloc pdo_dbh_t, soit le bloc pdo_stmt_t) est utilisé. Dans la pratique, c'est généralement une bonne idée de définir le champ dans les deux blocs à la même valeur pour s'assurer que le bon sera utilisé.

Le champ error_mode est un champ sur 6 octets contenant un code identifiant SQLSTATE sur 5 caractères ASCIIZ. Ce code permet de contrôler le processus de message d'erreur. Le code SQLSTATE est utilisé pour rechercher un message d'erreur dans la table interne des messages d'erreur PDO (voir pdo_sqlstate.c pour une liste des codes erreurs ainsi que leurs messages). Si le code est inconnu pour PDO, une valeur par défaut << Unknown Message >> est utilisée.

En plus du code SQLSTATE et du message d'erreur, PDO appelera une routine spécifique au driver fetch_err() pour obtenir des données particulières sur les conditions de l'erreur. Cette routine passe un tableau dans lequel le driver placera les informations additionnelles. Ce tableau a des slots de position particuliers pour des types spécifiques d'informations supplémentaires :

  1. Un code erreur natif. C'est généralement un code erreur obtenu directement depuis l'API de la base de données.

  2. Une chaîne descriptive. Cette chaîne peut contenir n'importe quelle information additionnelle en rapport avec l'erreur. Les drivers de base de données incluent typiquement des informations sur le message d'erreur, endroit du code où l'erreur est survenue et n'importe quelle autre information spécifique au driver que le développeur aura jugé nécessaire d'inclure. C'est généralement une bonne idée d'inclure toutes les informations obtenues de l'interface de base de données au moment où l'erreur survient. Pour les erreurs du drivers (comme les problèmes d'allocation de mémoire), le développeur du driver peut définir quelques sont les informations appropriées à communiquer.