try/catch/finally, throw new et relance
Utilisez try/catch/finally pour gérer les erreurs de manière prévisible ; comprenez la différence entre throw new et la relance d’une exception ; gardez des exemples courts et ciblés.
try/catch/finally, throw new et relance est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.
Présentation des exceptions
Objectif : gérer et propager les erreurs en toute sécurité.
- try/catch : gérer des exceptions spécifiques
- finally : s’exécute toujours pour le nettoyage
- throw new contre relance
- Gardez les gestionnaires courts ; ne masquez pas les bogues
Interception ciblée
Interceptez l’exception la plus spécifique à laquelle vous vous attendez ; gardez le gestionnaire court et clair.
using System;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Start");
try
{
int x = 10;
int y = 0; // will cause DivideByZeroException
Console.WriteLine(x / y);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Cannot divide by zero: " + ex.GetType().Name);
}
Console.WriteLine("Continue");
}
}
Ordre des interceptions
L’ordre est important : placez les interceptions spécifiques en premier et une interception générique de Exception en dernier, comme filet de sécurité.
using System;
public class Program
{
static int ParseAndDivide(string text, int divisor)
{
// Throws FormatException or DivideByZeroException
int value = int.Parse(text);
return value / divisor;
}
public static void Main(string[] args)
{
try
{
Console.WriteLine(ParseAndDivide("not-a-number", 2));
}
catch (FormatException)
{
Console.WriteLine("Bad number format");
}
catch (Exception ex)
{
// Fallback last
Console.WriteLine("Other error: " + ex.GetType().Name);
}
}
}
finally pour le nettoyage
Placez le nettoyage dans finally. Il s’exécute qu’une exception se produise ou non.
using System;
public class Program
{
static bool opened = false;
static void UseFakeResource()
{
try
{
opened = true;
Console.WriteLine("Open");
throw new InvalidOperationException("boom");
}
catch (InvalidOperationException)
{
Console.WriteLine("Handled");
}
finally
{
opened = false; // cleanup path
Console.WriteLine("Close");
}
}
public static void Main(string[] args)
{
UseFakeResource();
Console.WriteLine("Opened? " + opened);
}
}
Relancer correctement
Utilisez throw; pour relancer l’exception et conserver la pile d’appels d’origine. throw ex; la réinitialise. Enveloppez l’exception dans une nouvelle exception uniquement lorsque vous ajoutez du contexte.
using System;
public class Program
{
static void BadRethrow()
{
try
{
Fail();
}
catch (Exception ex)
{
// Resets stack trace:
throw ex; // BAD rethrow
}
}
static void GoodRethrow()
{
try
{
Fail();
}
catch
{
// Preserves original stack trace:
throw; // GOOD rethrow
}
}
static void Fail()
{
throw new InvalidOperationException("fail");
}
public static void Main(string[] args)
{
try { BadRethrow(); }
catch (Exception ex)
{
Console.WriteLine("Bad: " + (ex.StackTrace == null ? "no stack" : "stack reset likely"));
}
try { GoodRethrow(); }
catch (Exception ex)
{
Console.WriteLine("Good: preserves original stack");
}
}
}
Consignes de gestion
Consignes :
- Interceptez une exception lorsque vous pouvez la gérer ou ajouter du contexte.
- Sinon, laissez-la remonter.
- Gardez les gestionnaires courts ; évitez d’ignorer silencieusement les exceptions.
- Utilisez finally pour le nettoyage ; la libération des ressources fera l’objet de la prochaine leçon.
Règle de relance
Récapitulatif
Récapitulatif : utilisez try/catch pour les erreurs spécifiques, finally pour le nettoyage et préférez throw; lors d’une relance afin de conserver la pile d’appels d’origine.
Questions Fréquemment Posées
La leçon « try/catch/finally, throw new et relance » est-elle gratuite ?
Oui — le texte complet de « try/catch/finally, throw new et relance » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « try/catch/finally, throw new et relance » ?
Utilisez try/catch/finally pour gérer les erreurs de manière prévisible ; comprenez la différence entre throw new et la relance d’une exception ; gardez des exemples courts et ciblés. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 3.
Combien de temps prend la leçon « try/catch/finally, throw new et relance » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- try/catch/finally, throw new et relance
- Exceptions personnalisées et conception des erreurs
- IDisposable et instruction using