Module 6.Gestion des erreurs et des exceptions : Flashcards

1
Q

lancer une exception

A

Fonction qui retourne un code d’erreur puis on peut intercepter ce code

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Le mécanisme des exceptions :
o
lancer des exceptions sur le site de l’erreur.

A

lancer des exceptions sur le site de l’erreur.
o
transférer le contrôle à une autre partie du code

gérer la situation avec compétence.
Exemple :
o
«Incapable d’écrire ces octets» pourrait être devenir «Disque
plein» à un niveau supérieur.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

spécifiés à l’aide de blocs

A

try catch

try
// code pouvant lancer une exception
//avec
throw Type exception
catch (Type exception erreur
// erreur contient de l’information
sur
//
// code de gestion de l’exception

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

une fonction lance une exception

A

une fonction lance une exception:
orecherche d’un site d’interception pour cette exception.
oLa fonction ne retourne pas normalement
se termine immédiatement
Exécution transférée au site d’interception le plus proche (pour cette exception).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Librairie standard du C++ :

A

oHiérarchie d’exceptions
oDu côté logic_error, i.e. erreur de programmation.
oDu côté runtime_error par contre, il s’agit d’exception pouvant toujours se produire.

oLa théorie du contrat : exceptions attachées à cette hiérarchie

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Si le code dans le bloc try génère une exception de type
overflow_error ou underflow_error,

A

ole traitement correspondant est activé.
Si une exception d’un type différent est lancée,
oelle doit être gérée ailleurs sur un site d’interception du bon
type
Si un tel site n’existe pas, le programme s’arrêtera en donnant une erreur du type “Unhandle exception”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

gérer toutes les exceptions de contrat,

A

catch (ContratException& e)
o toutes les exceptions de contrat : precondition, postcondition, invariant et assertion seront attrapées

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

gérer seulement les préconditions

A

catch (PreconditionException &e).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

gérer toutes les erreurs de programmation

A

catch (logic_error& e)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Attraper toutes les exceptions et relancer

A

pour faire une action protectrice pour faire un nettoyage quelconque.

try
{ // code
}
catch (…)
{ // Gestion de n’importe quelle exception
throw; // Relance l’exception
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Une exception non gérée résulte en

A

un programme arrêté,
ominimiser le nombre d’exceptions lancées
oLes documenter clairement.

Ne jamais se servir des exceptions pour retourner des résultats de calcul.
one pas tenir compte du retour
–> arrêt immédiat du programme

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Gestion de la pile d’appel par le mécanisme des exceptions

A

Le flot linéaire d’exécution des instructions ne s’applique plus lorsque qu’une exception est lancée.

Au moment où une exception se produit, le contrôle passe
au site d’interception le plus proche pour cette exception.

Tous les objets entre l’énoncé throw et l’énoncé catch
seront détruits et leur destructeur est appelé.

(Normalement les objets sur la pile sont détruits lorsque l’exécution du programme atteint la fin d’un bloc ou d’une fonction.)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Structurer le code pour bénéficier de la gestion automatique des ressources en utilisant les constructeurs et les destructeurs des classes:

A

Utiliser une variable locale (objet) de type ifstream,
on ouvre le fichier par le constructeur et le fichier est fermé par le destructeur :
ifstream fs(“input.dat”);
foo (fs);
Le fichier sera fermé lorsque le programme sera à la recherche d’un site d’interception pour une exception et que tous objets seront détruits.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Même problème avec la mémoire allouée sur le monceau:

A

On ne doit pas conserver de pointeur comme variable d’une fonction.
classes unique_ptr<>, share_ptr<> du standard
permet de conserver les pointeurs dans des classes dont le destructeur gère la désallocation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly