set_exception_handler
PHP Manual
PHP Manual»Fonctions sur la gestion des erreurs»set_exception_handler

set_exception_handler

(PHP 5, PHP 7, PHP 8)

set_exception_handler — Définit une fonction utilisateur de gestion d'exceptions

Description

function set_exception_handler(?callable $callback): ?callable

set_exception_handler() définit le gestionnaire d'exceptions par défaut si une exception n'est pas attrapée dans un bloc try/catch. L'exécution sera stoppée après l'appel à la fonction callback.

Note:

Pendant l'exécution d'un gestionnaire d'exceptions, aucun gestionnaire d'exceptions n'est actif : à partir de PHP 8.3.0, le moteur le désactive avant de l'invoquer, afin qu'une exception levée par le gestionnaire ne lui soit pas repassée. Appelé depuis un gestionnaire, set_exception_handler() ne signale donc aucun gestionnaire précédemment défini.

À partir de PHP 8.3.5, le moteur empile également sur la pile des gestionnaires celui qu'il s'apprête à invoquer, si bien que restore_exception_handler() appelé depuis un gestionnaire réinstalle le gestionnaire en cours d'exécution plutôt que celui qui était actif avant lui.

Le gestionnaire en cours d'exécution est réinstallé automatiquement lorsqu'il retourne, mais uniquement si aucun gestionnaire d'exceptions n'est actif à ce moment-là. Dès que le gestionnaire appelle set_exception_handler() ou restore_exception_handler(), cette restauration automatique est ignorée et le gestionnaire actif est celui que le gestionnaire a lui-même laissé en place.

Modifier le gestionnaire d'exceptions depuis lui-même est donc déconseillé.

Liste de paramètres

callback

La fonction à appeler quand une exception non attrapée se produit. Cette fonction de gestion doit accepter un paramètre, qui sera l'objet Throwable qui a été levé. Les classes Error et Exception implémentent l'interface Throwable. Ceci est la signature du gestionnaire :

function handler(Throwable $ex): void

null peut être passé à la place, pour ré-initialiser ce gestionnaire en son statut initial.

Valeurs de retour

Retourne le gestionnaire précédemment défini ou null en cas d'erreur. Si aucun gestionnaire n'a été précédemment défini, null est également retourné.

Historique

Version Description
8.3.5 Le gestionnaire d'exceptions invoqué est désormais empilé sur la pile des gestionnaires et réinstallé lorsqu'il retourne, sauf si le gestionnaire a lui-même modifié la pile.
8.3.0 Le gestionnaire d'exceptions actif est désormais désactivé pendant son exécution, si bien que set_exception_handler() appelé depuis un gestionnaire ne signale aucun gestionnaire précédemment défini.

Exemples

Exemple #1 Exemple avec set_exception_handler()

<?php
function exception_handler(Throwable $exception) {
  echo "Exception non attrapée : " , $exception->getMessage(), "\n";
}

set_exception_handler('exception_handler');

throw new Exception('Uncaught Exception');
echo "Non exécuté\n";
?>

Voir aussi

To Top