En effet, un ami m'a fait remarquer un jour qu'en POO toute méthode devait pouvoir être détruite par son constructeur.
En fait, tout depend de comment et quand tu l'utilises. IMHO, tu peux utiliser des die pour debugger... mais par la suite, ca ne fait pas du tout credible si un utilisateur arrive sur une page blanche...Or, j'utilise comme 90% des programmeurs, je pense, la fonction die() à foison.
il devait parlé d'objet et non de methode, en php5 tu peut avoir un constructeur et un destructeur par objetEn effet, un ami m'a fait remarquer un jour qu'en POO toute méthode devait pouvoir être détruite par son constructeur.
pourquoi le mecanisme des exceptions fonctionne tres bien.Comment faire pour gérer les erreurs ? (je précise que je n'ai pas plus confiance que ça dans la gestion des erreurs de php5.
Ton ami a raison, une méthode ne devrait pas arrêter le système quand une erreur occure, elle doit gérer l'erreur en retournant un code-erreur à l'appelant.Bonjour,
Je suis préoccupé par une question de principe. En effet, un ami m'a fait remarquer un jour qu'en POO toute méthode devait pouvoir être détruite par son constructeur.
Or, j'utilise comme 90% des programmeurs, je pense, la fonction die() à foison.
Comment faire pour gérer les erreurs ? (je précise que je n'ai pas plus confiance que ça dans la gestion des erreurs de php5.
D'avance merci
class foo {
function foo (args) {
//travailler tout en observant une erreur
try {
//le travail à faire
}
catch (MyException $e) {
//capteur de try : reçoit l'objet erreur et le nomme '$e'
//programmer ce que vous devez faire de l'erreur $e
//Peut être retourner l'objet $e à l'appelant :
return $e;
//Peut être retourner un False pour signaler un echec de la méthode
return false;
//Peut être afficher l'erreur survenue: (déconseillé)
echo $e->getError();
}
}Code : Tout sélectionner
$resultat=mysql_fetch_array($requete);
if($resultat!=1)
die("Vous n'êtes pas enregistré");
est ce que tu pense que ce fonctionnement parait normal ,pour ton appli?$resultat=mysql_fetch_array($requete);
if($resultat!=1)
die("Vous n'êtes pas enregistré");
est ce que tu pense que ce fonctionnement parait normal ,pour ton appli?$resultat=mysql_fetch_array($requete);
if($resultat!=1)
die("Vous n'êtes pas enregistré");
pour ma part non, à la place du die je ferai une redirection sur la page de login et j'afficherai le message.
Maintenant comment utiliser les exceptions a bon escient j'aimerai connaitre l'avis des autres developpeur. je declenche une exception pour une clé de configuration non trouvé, par exemple.
Bonjour,Je viens de passer quelques temps à approfondir la gestion des exceptions.
Effectivement, c'est intéressant pour les erreurs au sens propre.
Cependant ma question touchait aussi à la gestion des erreurs dans mon processus ; ou en d'autres terme, si je prends l'exemple de l'identification éviter qque chose du type
Même si j'enrobe le message d'un en-tête et d'un pied.Code : Tout sélectionner
$resultat=mysql_fetch_array($requete); if($resultat!=1) die("Vous n'êtes pas enregistré");
Je doute qu'il soit opportun de lancer une exception pour cela.
Votre avis ?
Cela n'est pas possible. En effet, dans un exemple plus compliqué où la méthode est appelée en milieu de page (càd : les header ont déjà été envoyés), je retrouve mon problème !est ce que tu pense que ce fonctionnement parait normal ,pour ton appli?
pour ma part non, à la place du die je ferai une redirection sur la page de login et j'afficherai le message.
Code : Tout sélectionner
try
{
$connexion=new identificationt();
$connexion->connecter(id,motdepasse);
}
catch (MyException $e) {
echo $e -> getError();
}
Code : Tout sélectionner
identification::connecter(...){
[...]
$resultat=mysql_fetch_array($requete);
if($resultat!=1)
throw new MyException("Vous n'êtes pas connecté");
[...]
}