Lancer une exception
Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 55 sur 68.
Parfois, vous devez signaler que quelque chose s'est mal passé dans votre code et arrêter l'exécution normale. Le mot-clé throw vous permet de créer et de lever manuellement une exception, vous donnant ainsi le contrôle sur le moment et la raison pour laquelle votre programme doit gérer une condition d'erreur.
Lorsque vous levez une exception, vous créez un nouvel objet Exception et lui fournissez un message descriptif sur ce qui s'est mal passé. Cette exception arrêtera immédiatement l'exécution du code actuel et cherchera un bloc catch pour la gérer.
<?php
function checkAge($age) {
if ($age < 0) {
throw new Exception("Age cannot be negative");
}
echo "Age is valid: " . $age;
}
try {
checkAge(-5);
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>L'instruction throw nécessite la syntaxe new Exception(), où vous passez un message sous forme de chaîne décrivant le problème. Ce message peut ensuite être récupéré à l'aide de la méthode getMessage() dans votre bloc catch, ce qui permet de comprendre plus facilement ce qui s'est mal passé et de répondre de manière appropriée.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Défi
FacileVous recevrez deux entrées : un nombre représentant un prix et un nombre représentant un pourcentage de remise. Les deux entrées seront fournies sous forme de nombres (le prix peut être un décimal et le pourcentage de remise sera un entier compris entre 0 et 100).
Lisez les deux entrées et créez une fonction appelée calculateFinalPrice qui accepte deux paramètres : le prix et le pourcentage de remise. À l'intérieur de cette fonction, vérifiez si le pourcentage de remise est supérieur à 100 ou inférieur à 0. Si l'une ou l'autre de ces conditions est vraie, lancez une nouvelle Exception avec le message "Invalid discount percentage". Si la remise est valide, calculez le prix final après application de la remise et retournez-le.
Utilisez un bloc try...catch pour appeler la fonction avec les entrées fournies. Dans le bloc try, appelez la fonction et affichez "Final price: " suivi du prix final calculé. Dans le bloc catch, gérez l'exception en affichant "Error: " suivi du message de l'exception en utilisant la méthode getMessage().
Format d'entrée :
- Première ligne : Un nombre représentant le prix (exemple :
100ou49.99) - Deuxième ligne : Un entier représentant le pourcentage de remise (exemple :
20ou150)
Sortie attendue :
- Si la remise est valide :
Final price:suivi du prix calculé après remise - Si la remise est invalide :
Error: Invalid discount percentage
Aide-mémoire
Utilisez le mot-clé throw pour créer et lancer manuellement des exceptions :
throw new Exception("Error message");Lorsqu'une exception est lancée, elle arrête l'exécution normale et recherche un bloc catch pour la gérer :
<?php
function checkAge($age) {
if ($age < 0) {
throw new Exception("Age cannot be negative");
}
echo "Age is valid: " . $age;
}
try {
checkAge(-5);
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>Utilisez la méthode getMessage() dans le bloc catch pour récupérer le message d'exception.
Essayez vous-même
<?php
// Lire les entrées
$price = floatval(fgets(STDIN));
$discountPercentage = intval(fgets(STDIN));
// TODO : Écrivez votre code ci-dessous
// Créer la fonction calculateFinalPrice
// Utiliser un bloc try...catch pour appeler la fonction et gérer les exceptions
// Afficher la sortie appropriée
?>Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Fonctions avancées
Fonctions anonymesClosures et 'use'Fonctions fléchéesFonctions de rappelUtilisation de 'call_user_func'Fonctions variablesPassage par référenceFonctions récursivesRécapitulatif : Mélange de fonctions4Tableaux multidimensionnels
Créer un tableau 2DAccéder aux éléments d'un tableau 2DModifier les éléments d'un tableau 2DItérer avec des boucles imbriquéesTableaux associatifs 2DRécapitulatif : Exercice de grille simple2Manipulations avancées de tableaux
Ajouter avec 'array_push'Supprimer avec 'array_pop'Ajouter avec 'array_unshift'Supprimer avec 'array_shift'Fusionner des tableaux indexésFusionner des tableaux associatifsExtraire avec 'array_slice'Valeurs avec 'in_array'Clés avec 'array_search'Récapitulatif : Exercice Playlist5Carnet de notes des élèves
Configuration du projet : Structure de donnéesAjouter un nouvel élèveAjouter une note à un élèveCalculer la moyenne d'un élèveTrouver le meilleur élèveGénérer un bulletin de notes8Gestion des erreurs et des exceptions
Comprendre les erreurs PHPLe bloc 'try...catch'Le bloc 'finally'Lancer une exceptionCréer une exception personnaliséeUtiliser une exception personnaliséeRécapitulatif : Validation des entrées3Tri des tableaux
Trier les tableaux indexés par ordre croissantTrier les tableaux indexés par ordre décroissantTrier les tableaux associatifs par valeurTrier les tableaux associatifs par cléTri par ordre naturelTri personnalisé avec 'usort'Récapitulatif : Tri d'un classement