Imbriquée try catch en PHP
Considérer:
try{
class MyException extends Exception{}
try{
throw new MyException;
}
catch(Exception $e){
echo "1:";
throw $e;
}
catch(MyException $e){
echo "2:";
throw $e;
}
}
catch(Exception $e){
echo get_class($e);
}
Je suis confus avec ce try et catch. Je suis dans l'attente d'une 2:MyException
en raison de la deuxième try throw MyException
. Mais le résultat réel est 1:MyException
. Quelle est l'explication?
Vous devez utiliser la principale Exception comme la dernière option. Afin de swap de premier et deuxième blocs catch.
OriginalL'auteur IqbalBary | 2013-10-05
Vous devez vous connecter pour publier un commentaire.
MyException
s'étendException
, doncExcepton
est plus général queMyException
, et la premièrecatch
bloc de l'attraper. Si vous voulez attraperMyException
vous avez besoin de t rverse l'ordre de lacatch
blocs:OriginalL'auteur
La première catch-bloc de prises tout de l '"Exception" de la classe. Depuis votre MyException s'étend à l'Exception de classe, la MyException est pris dans cette première prise de bloc.
OriginalL'auteur Wouter M.
Il serait mieux si vous vérifiez le nom de la classe et de les traiter en conséquence.
OriginalL'auteur Rx Seven