alphanono
Messages postés39Date d'inscriptionvendredi 9 mai 2003StatutMembreDernière intervention25 mai 2009
-
29 avril 2009 à 16:15
alphanono
Messages postés39Date d'inscriptionvendredi 9 mai 2003StatutMembreDernière intervention25 mai 2009
-
30 avril 2009 à 18:14
Salut !
Existe-t'il une façon d'arrêter l'exécution d'une classe ??
Admettons que j'ai ceci :
<?php
class demo {
function __construct(){
$this->essai1();
}
function essai1(){
echo 'niveau 1';
--> j'arrête le déroulement de ma classe parceque je vérifie quelque chose de négatif
echo 'niveau 2';
}
}
$var = new demo();
echo "c'est pas gagné !";
?>
Je souhaite arrêter tout ce qui se passe dans l'appel de la classe à un moment donné mais pas tout le script. Un exit() par exemple arrête tout il me semble. Moi je voudrais que ça continue en dehors de l'appel de la classe.
alphanono
Messages postés39Date d'inscriptionvendredi 9 mai 2003StatutMembreDernière intervention25 mai 2009 30 avril 2009 à 18:14
Arf ... effectivement, ça fait longtemps que j'utilise les exceptions mais je ne sais pas pourquoi, je les ai toujours utilisées dans un bloc try/catch écrit d'un trait (dans une même fonction par exemple)
Donc pour ceux qui tomberaient sur ce message et que ça intéresserait :
<?php
class demo {
function __construct(){
try{
$this->essai1();
$this->essai2();
} catch (Exception $e){
echo $e;
}
}
function essai1(){
echo 'niveau 1';
throw new Exception('J'arrête ici le déroulement de ma classe');
echo 'niveau 2';
}
function essai2(){
echo 'niveau 3';
}
}
$var = new demo();
echo "c'est pas gagné !";
?>
résultat :
niveau 1
c'est pas gagné !
La définition donnée par la doc c'est que quand une exception est lancée par un Throw, le système va jusqu'au premier catch qu'il trouve sans exécuter tout ce qu'il y a entre le throw et le catch.