par
agité » 26 mai 2008, 10:55
Ensuite, continue ton code comme d'habitude. En gros, dans une classe, tu utilises throw new Exception et dans ton code, tu utilise try/catch
Tout le code est à mettre dans le try
et tu attrape les exceptions dans le catch, et ton try/catch, mets le directement dans ta fonction...tout simplement.
Donc je peux utliser le try / catch directement dans mes fonctions ou je dois l'utiliser dans le code uniquement ?
j'ai tenter, avec l'aide d'un tuto de faire :
// Fonction requete select sur la bdd
public function req_query($req) {
try {
$reponse = parent::query($req);
}
catch (query_report $e) {
$e -> getError();
}
}
}
et pour les exception de faire un rapport complet :
class query_report extends Exception {
public function __contruct( $message, $code)
{
parent::__construct($message, $code );
}
// Méthode retournant un message d'erreur complet et formaté.
public function getError() {
// On retourne un message d'erreur complet pour nos besoins.
$return = 'Une exception a été gérée :<br/>';
$return .= '<strong>Message : ' . $this->getMessage() . '</strong><br/>';
$return .= 'A la ligne : ' . $this->getLine() . '<br/>';
return $return;
}
}
et je ne comprends pas ton explication, sur la plupart des sites ou je regardes les exception ils disent essayer un code avec try et retourner l'erreur avec catch mais je ne comprends pas pourquoi tu met un 2ème catch dans le code, c'est le "s'il n'y a pas d'erreur, cela viens d'ailleurs" qui me gène.
Ce que je veux faire c'est d'avoir pour le moment (en pré prod) avoir les retour complet des messages d'erreurs, avec les lignes et message d'erreur sans avoir a interompre le reste du script, me rapporter clairement chaque erreur.
Une fois en prod de ne plus afficher les erreurs, seulement les reporter dans un fichier de log et ne pas afficher quoi que ce soit pour l'utilisateur (question de sécurité).
Pour l'instant j'en suis a la première partie et donc retourner un message d'erreur complet pour les erreurs ...