EXCEPTIONS

Salut ce forum apprends les bases du c++

Moderator: Rick

Post Reply
Hydraxx
Site Admin
Posts: 114
Joined: Mon Jan 12, 2026 4:04 pm
Location: France
Contact:

EXCEPTIONS

Post by Hydraxx »

EXCEPTIONS

À QUOI ÇA SERT ?

Une exception permet de séparer :
  • le code normal ;
  • le traitement d’une erreur exceptionnelle.
Sans exception :

Code: Select all

int result = open();

if (result != 0)
{
    return result;
}
Avec exception :

Code: Select all

if (failed)
{
    throw Error{};
}

1. throw

Code: Select all

throw std::runtime_error{"Erreur"};
L’exécution normale s’arrête.

Le runtime cherche un catch compatible.


2. try / catch

Code: Select all

try
{
    riskyFunction();
}
catch (const std::exception& ex)
{
    std::cerr << ex.what();
}

3. STACK UNWINDING


C’est le point essentiel.

Supposons :

Code: Select all

void f()
{
    Resource r;
    riskyFunction();
}
Si riskyFunction() lance une exception, le runtime remonte la pile.

Avant de quitter f(), le destructeur de r est appelé.

C’est pourquoi RAII fonctionne parfaitement avec les exceptions.


4. POURQUOI catch PAR const&

Code: Select all

catch (const std::exception& ex)
Pourquoi pas par valeur ?

Pour :
  • éviter une copie ;
  • conserver le polymorphisme ;
  • lire l’exception sans la modifier.

5. EXCEPTIONS ET BAS NIVEAU


Dans certains environnements :
  • kernel ;
  • firmware ;
  • temps réel ;
  • projets sans runtime complet ;
les exceptions C++ peuvent être désactivées ou déconseillées.

Sous Windows kernel, on rencontre davantage :
  • NTSTATUS ;
  • SEH selon contexte ;
  • codes d’erreur.
Sous Linux user-mode :
  • errno ;
  • codes de retour.
Donc un développeur système doit savoir utiliser plusieurs modèles d’erreur.


À RETENIR


Exception :
mécanisme de transfert de contrôle en cas d’erreur.

RAII :
garantit que les ressources automatiques sont libérées pendant la remontée.

Return to “Bases du C++”

Who is online

Users browsing this forum: No registered users and 0 guests