Cours 16 - Gestion des exceptions
Table des matières
Objectifs
- Connaître le concept d'exception en PHP
- Être en mesure d'utiliser les exceptions de manière concrète
Déroulement
- Introduction
- C'est quoi une exception?
- Faire exercice 16
C'est quoi une exception?
- Les exceptions en PHP sont un mécanisme permettant de gérer les erreurs de manière plus contrôlée et organisée.
- Elles représentent des conditions d'erreur ou des comportements inattendus dans un programme.
- Utiliser les exceptions permet d'avoir un code plus propre et plus sûr, car elles séparent la logique d'erreur de la logique normale du programme.
Comment fonctionnent les exceptions ?
En PHP, une exception est lancée (thrown) avec le mot-clé throw
suivi d'un objet Exception. Une fois qu'une exception est lancée, le script s'arrête et saute à la première correspondance de bloc catch
qui peut gérer cette exception.
Voici la syntaxe de base pour utiliser les exceptions :
<?php
try {
// Code qui peut générer une exception
throw new Exception("Un message d'erreur");
} catch (Exception $e) {
// Code pour gérer l'exception
echo "Exception capturée : " . $e->getMessage();
}
?>
Quand utiliser une exception?
Les exceptions sont utilisées pour gérer des situations exceptionnelles dans votre code, où le flux normal d'exécution ne peut pas continuer en raison d'un problème.
Lance une exception n'importe où dans le code
- => Spécifier le message d'erreur
- => Optionnel: Spécifier le numéro de l'erreur
- => Optionnel: Spécifier l'erreur précédente
Exemple concret
<?php
function obtenirMoyenne( $note1, $note2) {
if (!is_numeric($note1) || !is_numeric($note2)) {
// On lance une nouvelle exception grâce à throw et on instancie directement un objet de la classe Exception.
throw new Exception('Les deux paramètres doivent être des nombres!');
}
return ($note1 + $note2) / 2;
}
//il manque ici le block try catch!
echo obtenirMoyenne(12, -3), '<br />';
echo obtenirMoyenne('azerty', 54), '<br />'; // => va généré une erreur fatale ici
echo obtenirMoyenne(4, 8);
?>
Attraper une exception
bloc try => pour faire nos opération et essais
bloc catch => pour attraper l'erreur on fait quoi avec?
<?php
try{ // On va essayer d'effectuer les instructions situées dans ce bloc.
echo obtenirMoyenne(12, -3), '<br />';
echo obtenirMoyenne('azerty', 54), '<br />';
echo obtenirMoyenne(4, 8);
} catch (Exception $e) { // On va attraper les exceptions "Exception" s'il y en a une qui est levée.
echo 'Une exception a été lancée. Message d\'erreur : ', $e->getMessage();
}
?>
Autres types d'exceptions
Il y a déjà des types d'exceptions
- Exception
- ErrorException
- LogicException
- BadFunctionCallException
- BadMethodCallException
- DomainException
- InvalidArgumentException
- LengthException
- OutOfRangeException
- BadFunctionCallException
- RuntimeException
- OutOfBoundsException
- OverflowException
- RangeException
- UnderflowException
- UnexpectedValueException
Retour sur l'exception PDOException
<?php
try {
$db = new PDO('mysql:host=localhost;dbname=tests', 'root', ''); // Tentative de connexion.
echo 'Connexion réussie !'; // Si la connexion a réussi, alors cette instruction sera exécutée.
} catch (PDOException $e) { // On attrape les exceptions PDOException.
echo 'La connexion a échoué.<br />';
echo 'Informations : [', $e->getCode(), '] ', $e->getMessage(); // On affiche le n° de l'erreur ainsi que le message.
}
?>
Mot clé finally
PHP 5.5 a introduit le bloc finally, qui existe déjà dans d'autres langages, et qui sert à contenir du code qui est toujours exécuté, qu'on passe dans le try ou dans le catch :
<?php
finally
{
echo "Action effectuée quoi qu'il arrive";
}
?>
En résumé
- Une exception est une erreur que l'on peut attraper grâce aux mots-clés try et catch.
- Une exception est une erreur que l'on peut personnaliser, que ce soit au niveau de son affichage ou au niveau de ses renseignements
- Une exception se lance grâce au mot-clé throw.
- Il existe un certain nombre d'exceptions déjà disponibles dont il ne faut pas hésiter à se servir pour respecter la logique du code.