0Pricing
C# Academy · Leçon

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

Vérification rapide : quelle instruction relance correctement l’exception actuelle tout en préservant la trace de la pile d’origine ?

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

  1. try/catch/finally, throw new et relance
  2. Exceptions personnalisées et conception des erreurs
  3. IDisposable et instruction using
← Retour à C# Academy