92 votes

php : attraper une exception et continuer l'exécution, est-ce possible ?

Est-il possible d'attraper une exception et de continuer l'exécution de script ?

144voto

Felix Kling Points 247451

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.

116voto

Doug T. Points 33360

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.

22voto

Dominic Rodger Points 44489

Bien sûr :

try {
   throw new Exception('Something bad');
} catch (Exception $e) {
    // Do nothing
}

Vous pouvez consulter la documentation de PHP sur Exceptions .

13voto

Abdessamad Points 123

Php > 7

utiliser la nouvelle interface Throwable

    try {
        // Code that may throw an Exception or Error.
    } catch (Throwable $t) {
        // Handle exception
    }

echo "Script is still running..."; // this script will be executed.

8voto

Christos L. Points 71

Pour PHP 8+ nous pouvons omettre le nom de la variable en cas d'exception.

catch

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) {}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X