Exception : générer une erreur 404
Posté : 18 mars 2009, 10:06
Je voudrai savoir si il est possible de générer une erreur 404 en levant une exception personallisée.
Pour illustrer un peu plus, je code un site de questions réponses. Sur la page question, l objet question est crée avec deux parametre : id_question et url_question.
Dans ma classe, je retourne donc la question correspondante dans ma BD avec ses deux parametres.
Je me suis arrengé pour que si, l id et l url ne corresponde pas, ça me lève une exception. Mais pour des soucis de référencement, je désirerai que l exception leve une erreur 404.
Merci
Pour illustrer un peu plus, je code un site de questions réponses. Sur la page question, l objet question est crée avec deux parametre : id_question et url_question.
Dans ma classe, je retourne donc la question correspondante dans ma BD avec ses deux parametres.
Je me suis arrengé pour que si, l id et l url ne corresponde pas, ça me lève une exception. Mais pour des soucis de référencement, je désirerai que l exception leve une erreur 404.
try{
//Recuperation de l ID passé en parametre dans l URL
$id_question = $_GET['num_quest'];
$url_question = $_GET['url_quest'];
$oQuestion = new question($id_question,$url_question);
$oQuestion->_affichQuestion(); //Methode affichant la question dont l'ID et l URL est passé en paramettre (requete SQL)
if(empty($oQuestion->m_aAffichQuestion['qid_question'])){
throw new MyException('<div class="msg_err"><p>La question n\'existe pas ou a été éffacée.</p></div>');
} //levé exception 404 ici demandé
/** suite du code **/
}catch(MyException $e){
echo $e->getError();
}
Et voila ma classe MyException
class MyException extends Exception {
// Constructeur de la classe.
public function __construct($msg) {
parent :: __construct($msg);
}
// Pour le fun, on ajoute une méthode qui récupère l'heure de l'erreur.
public function getTime() {
return date('Y-m-d H:i:s');
}
// Méthode retournant un message d'erreur complet et formaté.
public function getError() {
// On retourne un message d'erreur complet pour nos besoins.
// $return = '<br />Une exception a été gérée :<br/>';
$return .= '<strong>'.$this->getMessage().'</strong><br/>';
//$return .= 'A la ligne : ' . $this->getLine() . '<br/>';
//$return .= 'Dans le fichier : ' . $this->getFile() . '<br/>';
//$return .= 'Il était : ' . $this->getTime();
return $return;
}
}
J ai pensé à créé une nouvelle classe MyException404 mais je ne sais pas quoi mettre dans ma méthode.Merci