Exceptions personnalisées
Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 29 sur 66.
Les exceptions personnalisées vous permettent de créer des types d'exceptions spécifiques pour les scénarios d'erreur uniques de votre application.
Pour créer une exception personnalisée, définissez une classe qui hérite de Exception. L'héritage signifie que votre nouvelle classe obtient automatiquement tout le comportement de la classe parente — dans ce cas, Exception — tout en vous permettant d'ajouter ou de personnaliser la fonctionnalité. La syntaxe class MyException : Exception signifie MyException étend Exception.
public class InvalidAgeException : Exception
{
public InvalidAgeException() : base("Age is not valid.")
{
}
public InvalidAgeException(string message) : base(message)
{
}
}: Exception — hérite de la classe Exception intégrée.: base(...) — appelle le constructeur de la classe parent Exception pour définir le message d'erreur.
Le premier constructeur fournit un message par défaut lorsqu'aucun n'est fourni.
Le deuxième constructeur accepte un message personnalisé afin que les appelants puissent décrire l'erreur en détail.
Maintenant, vous pouvez lever votre exception personnalisée lorsque nécessaire :
int age = -5;
if (age < 0)
{
throw new InvalidAgeException("Age cannot be negative.");
}Lorsque ce code s'exécute avec un âge négatif, il lèvera votre exception personnalisée avec le message « Age cannot be negative. »
Remarque : Dans les exercices de cette leçon, les fonctions de validation retournent true lorsque l'entrée est valide et lèvent une exception personnalisée lorsqu'elle ne l'est pas. Parce qu'une exception non gérée arrête l'exécution immédiatement, les cas de test n'ont besoin de vérifier que le chemin de retour true — l'exception elle-même est le résultat observable pour les entrées invalides.
Défi
MoyenCréez une classe d'exception personnalisée nommée InvalidTemperatureException qui hérite de Exception. Elle doit avoir :
- Un constructeur par défaut qui définit un message "Temperature is not valid."
- Un constructeur qui accepte un message personnalisé.
Ensuite, implémentez une méthode nommée checkTemperature qui :
- Prend un paramètre entier représentant une température en Celsius
- Lance une
InvalidTemperatureExceptionavec le message "Temperature below absolute zero!" si la température est inférieure à -273 - Retourne true si la température est valide
Aide-mémoire
Pour créer une exception personnalisée, définissez une classe qui hérite de Exception :
public class InvalidAgeException : Exception
{
public InvalidAgeException() : base("Age is not valid.")
{
}
public InvalidAgeException(string message) : base(message)
{
}
}Levez votre exception personnalisée lorsque nécessaire :
int age = -5;
if (age < 0)
{
throw new InvalidAgeException("Age cannot be negative.");
}Essayez vous-même
using System;
class CheckTemperature
{
// Créez votre classe d'exception personnalisée ici
public static bool checkTemperature(int celsius)
{
// Écrivez votre code ici
}
}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
1Tableaux multidimensionnels
Bases des tableaux 2DDéclaration et initialisation en 2DAccès aux éléments d'un tableau 2DBoucles imbriquées et tableaux 2DTableaux irréguliersOpérations matricielles courantesRécapitulatif - Multidimensionnel4Techniques de contrôle de flux
Retours anticipésClauses de gardeInstructions de saut (goto)Break et ContinueAplatir les conditionnelles imbriquées2Prise de décision avancée
Conditions multiplesLogique booléenne complexeComparaison If vs SwitchInstructions Switch imbriquéesRécapitulatif - Décisions avancées5Gestion des exceptions
Bases du Try-CatchTypes d'exceptionsBlocs Catch multiplesManipulation de fichiersLe bloc FinallyUsing vs Try-FinallyExceptions personnaliséesRécapitulatif - Gestion des erreurs3Améliorations des boucles
Performance des bouclesItération de structures complexesChaque type de boucleRefactorisation des bouclesRécapitulatif - Boucles optimisées6Gestion des valeurs nulles
Les bases des références nullesTypes valeur nullablesPatterns de vérification de nullitéProgrammation défensiveRécapitulatif - Null Safety