Est-il possible d'attraper une exception et de continuer l'exécution de script ?
Réponses
Trop de publicités?Oui, mais cela dépend de ce que vous voulez exécuter :
Par exemple
try {
a();
b();
}
catch(Exception $ignored){
}
c();
c()
sera toujours exécutée. Mais si a()
lance une exception, b()
es no exécuté.
Ne mettez les produits que dans le try
qui dépendent les uns des autres. Par exemple b
dépend d'un résultat de a
il n'est pas logique de mettre b
après la try-catch
bloc.
Bien sûr, il suffit d'attraper l'exception à l'endroit où l'on veut poursuivre l'exécution...
try
{
SomeOperation();
}
catch (SomeException $ignored)
{
// do nothing... php will ignore and continue
// but maybe use "ignored" as name to silence IDE warnings.
}
Bien sûr, cela pose le problème de l'abandon silencieux d'une erreur qui pourrait être très importante. SomeOperation() peut échouer en causant d'autres problèmes subtils et difficiles à comprendre, mais vous ne le saurez jamais si vous laissez tomber silencieusement l'exception.
Bien sûr :
try {
throw new Exception('Something bad');
} catch (Exception $e) {
// Do nothing
}
Vous pouvez consulter la documentation de PHP sur Exceptions .
Pour PHP 8+ nous pouvons omettre le nom de la variable en cas d'exception.
Depuis PHP 8.0.0, le nom de la variable pour une exception est optionnel. S'il n'est pas spécifié, le bloc catch s'exécutera mais n'aura pas accès à l'objet lancé.
Nous pouvons donc procéder de la manière suivante :
try {
throw new Exception("An error");
}
catch (Exception) {}
- Réponses précédentes
- Plus de réponses