selon ma (modeste) expérience, les exceptions en C++sont très
largement sous utilisées, et on en reste (me semble t-il) toujours
à la bonne vieille méthode du retour d'un code d'erreur. Je suis un
peu surpris de cet état de fait, les exceptions étant supposées
apporter une gestion plus performantes des erreurs. J'ai dons
quelques questions: est-il vrai que les exceptions sont sous
utilisées? Quels sont vos retours d'expérience? Ou bien y a t'il
une raison plus profonde à la sous-utilisation des exceptions?
selon ma (modeste) expérience, les exceptions en C++sont très
largement sous utilisées, et on en reste (me semble t-il) toujours
à la bonne vieille méthode du retour d'un code d'erreur. Je suis un
peu surpris de cet état de fait, les exceptions étant supposées
apporter une gestion plus performantes des erreurs. J'ai dons
quelques questions: est-il vrai que les exceptions sont sous
utilisées? Quels sont vos retours d'expérience? Ou bien y a t'il
une raison plus profonde à la sous-utilisation des exceptions?
selon ma (modeste) expérience, les exceptions en C++sont très
largement sous utilisées, et on en reste (me semble t-il) toujours
à la bonne vieille méthode du retour d'un code d'erreur. Je suis un
peu surpris de cet état de fait, les exceptions étant supposées
apporter une gestion plus performantes des erreurs. J'ai dons
quelques questions: est-il vrai que les exceptions sont sous
utilisées? Quels sont vos retours d'expérience? Ou bien y a t'il
une raison plus profonde à la sous-utilisation des exceptions?
selon ma (modeste) expérience, les exceptions en C++sont très
largement sous utilisées,
et on en reste (me semble t-il) toujours à la bonne vieille
méthode du retour d'un code d'erreur. Je suis un peu surpris
de cet état de fait, les exceptions étant supposées apporter
une gestion plus performantes des erreurs.
J'ai dons quelques questions: est-il vrai que les exceptions
sont sous utilisées?
Quels sont vos retours d'expérience? Ou bien y a t'il une
raison plus profonde à la sous-utilisation des exceptions?
selon ma (modeste) expérience, les exceptions en C++sont très
largement sous utilisées,
et on en reste (me semble t-il) toujours à la bonne vieille
méthode du retour d'un code d'erreur. Je suis un peu surpris
de cet état de fait, les exceptions étant supposées apporter
une gestion plus performantes des erreurs.
J'ai dons quelques questions: est-il vrai que les exceptions
sont sous utilisées?
Quels sont vos retours d'expérience? Ou bien y a t'il une
raison plus profonde à la sous-utilisation des exceptions?
selon ma (modeste) expérience, les exceptions en C++sont très
largement sous utilisées,
et on en reste (me semble t-il) toujours à la bonne vieille
méthode du retour d'un code d'erreur. Je suis un peu surpris
de cet état de fait, les exceptions étant supposées apporter
une gestion plus performantes des erreurs.
J'ai dons quelques questions: est-il vrai que les exceptions
sont sous utilisées?
Quels sont vos retours d'expérience? Ou bien y a t'il une
raison plus profonde à la sous-utilisation des exceptions?
Fabien LE LEZ a écrit :
> On Sat, 4 Jul 2009 12:34:35 +0200, "Guillaume Gourdin" :
>> les exceptions en C++sont très largement sous utilisées, et
>> on en reste (me semble t-il) toujours à la bonne vieille
>> méthode du retour d'un code d'erreur.
> Il y a plusieurs raisons à ça :
> D'une part, les exceptions n'existent pas en C, et leur
> support en C++ est "récent". Du coup, les gens qui
> programment toujours soit en C, soit en C++ "ancien", on du
> mal à s'y faire. De plus, beaucoup de bibliothèques, écrites
> en C, ne gèrent pas les exceptions.
Qu'entends-tu par "récent" ?
Ca existait déjà dans le C++ au moins en 1990...
> D'autre part, il n'y a pas vraiment de consensus sur
> l'étendue d'utilisation des exceptions. Certains pensent
> qu'il faut les réserver à des cas vraiment exceptionnels,
> qui ne devraient pas se produire lors du déroulement normal
> du programme. Exemple : pas assez de mémoire pour créer un
> objet, tentative de prendre le cinquième élément d'un
> tableau qui n'en comporte que trois, etc.
L'exemple du tableau est plutôt un bug de programmation. Ce
n'est pas une situation exceptionnelle comme le "pas assez de
mémoire".
> D'ailleurs, par défaut, les iostream ne lancent pas
> d'exception en cas d'erreur.
C'est un tort !
> Note aussi que si la fonction appelante comporte directement
> le code de traitement d'erreur en cas d'échec de la fonction
> appelée, utiliser un code de retour est plus facile. Les
> exceptions deviennent utiles s'il faut remonter de plusieurs
> appels de fonctions pour trouver le code de traitement
> d'erreur.
Je ne suis pas d'accord avec ton dernier paragraphe.
Même si c'est directement la fonction appelante qui traite
l'exception, il est préférable d'utiliser le mécanisme
d'exception plutôt qu'un code retour.
Pourquoi ?
Parce que le traitement de l'exception est isolé dans le code
(catch) et non disséminé directement derrière l'appel, ce qui
mélange le cas normal et le cas "exceptionnel".
C'est une question de méthodologie, de lisibilité et de
maintenabilité.
De plus, on peut facilement changer le catch au profit de la
capture d'une exception plus générale que l'exception
spécifique qu'on a "attrapé" dans la première version d'un
logiciel.
Fabien LE LEZ a écrit :
> On Sat, 4 Jul 2009 12:34:35 +0200, "Guillaume Gourdin" :
>> les exceptions en C++sont très largement sous utilisées, et
>> on en reste (me semble t-il) toujours à la bonne vieille
>> méthode du retour d'un code d'erreur.
> Il y a plusieurs raisons à ça :
> D'une part, les exceptions n'existent pas en C, et leur
> support en C++ est "récent". Du coup, les gens qui
> programment toujours soit en C, soit en C++ "ancien", on du
> mal à s'y faire. De plus, beaucoup de bibliothèques, écrites
> en C, ne gèrent pas les exceptions.
Qu'entends-tu par "récent" ?
Ca existait déjà dans le C++ au moins en 1990...
> D'autre part, il n'y a pas vraiment de consensus sur
> l'étendue d'utilisation des exceptions. Certains pensent
> qu'il faut les réserver à des cas vraiment exceptionnels,
> qui ne devraient pas se produire lors du déroulement normal
> du programme. Exemple : pas assez de mémoire pour créer un
> objet, tentative de prendre le cinquième élément d'un
> tableau qui n'en comporte que trois, etc.
L'exemple du tableau est plutôt un bug de programmation. Ce
n'est pas une situation exceptionnelle comme le "pas assez de
mémoire".
> D'ailleurs, par défaut, les iostream ne lancent pas
> d'exception en cas d'erreur.
C'est un tort !
> Note aussi que si la fonction appelante comporte directement
> le code de traitement d'erreur en cas d'échec de la fonction
> appelée, utiliser un code de retour est plus facile. Les
> exceptions deviennent utiles s'il faut remonter de plusieurs
> appels de fonctions pour trouver le code de traitement
> d'erreur.
Je ne suis pas d'accord avec ton dernier paragraphe.
Même si c'est directement la fonction appelante qui traite
l'exception, il est préférable d'utiliser le mécanisme
d'exception plutôt qu'un code retour.
Pourquoi ?
Parce que le traitement de l'exception est isolé dans le code
(catch) et non disséminé directement derrière l'appel, ce qui
mélange le cas normal et le cas "exceptionnel".
C'est une question de méthodologie, de lisibilité et de
maintenabilité.
De plus, on peut facilement changer le catch au profit de la
capture d'une exception plus générale que l'exception
spécifique qu'on a "attrapé" dans la première version d'un
logiciel.
Fabien LE LEZ a écrit :
> On Sat, 4 Jul 2009 12:34:35 +0200, "Guillaume Gourdin" :
>> les exceptions en C++sont très largement sous utilisées, et
>> on en reste (me semble t-il) toujours à la bonne vieille
>> méthode du retour d'un code d'erreur.
> Il y a plusieurs raisons à ça :
> D'une part, les exceptions n'existent pas en C, et leur
> support en C++ est "récent". Du coup, les gens qui
> programment toujours soit en C, soit en C++ "ancien", on du
> mal à s'y faire. De plus, beaucoup de bibliothèques, écrites
> en C, ne gèrent pas les exceptions.
Qu'entends-tu par "récent" ?
Ca existait déjà dans le C++ au moins en 1990...
> D'autre part, il n'y a pas vraiment de consensus sur
> l'étendue d'utilisation des exceptions. Certains pensent
> qu'il faut les réserver à des cas vraiment exceptionnels,
> qui ne devraient pas se produire lors du déroulement normal
> du programme. Exemple : pas assez de mémoire pour créer un
> objet, tentative de prendre le cinquième élément d'un
> tableau qui n'en comporte que trois, etc.
L'exemple du tableau est plutôt un bug de programmation. Ce
n'est pas une situation exceptionnelle comme le "pas assez de
mémoire".
> D'ailleurs, par défaut, les iostream ne lancent pas
> d'exception en cas d'erreur.
C'est un tort !
> Note aussi que si la fonction appelante comporte directement
> le code de traitement d'erreur en cas d'échec de la fonction
> appelée, utiliser un code de retour est plus facile. Les
> exceptions deviennent utiles s'il faut remonter de plusieurs
> appels de fonctions pour trouver le code de traitement
> d'erreur.
Je ne suis pas d'accord avec ton dernier paragraphe.
Même si c'est directement la fonction appelante qui traite
l'exception, il est préférable d'utiliser le mécanisme
d'exception plutôt qu'un code retour.
Pourquoi ?
Parce que le traitement de l'exception est isolé dans le code
(catch) et non disséminé directement derrière l'appel, ce qui
mélange le cas normal et le cas "exceptionnel".
C'est une question de méthodologie, de lisibilité et de
maintenabilité.
De plus, on peut facilement changer le catch au profit de la
capture d'une exception plus générale que l'exception
spécifique qu'on a "attrapé" dans la première version d'un
logiciel.
On Sun, 05 Jul 2009 05:49:54 +0200, Amrein-Marie Christophe
:
>Personnellement, depuis que j'ai touché à Java et .Net, je
>gère les erreurs en C++ sous forme d'exceptions. Toujours.
En gros, tu programmes en Java tout en utilisant un
compilateur C++ ? Ça ressemble aux gens (plus nombreux) qui
programment en C tout en utilisant un compilateur C++ (et qui,
pour en revenir au sujet, n'utilisent jamais les exceptions,
puisqu'elles n'existent pas en C++).
On Sun, 05 Jul 2009 05:49:54 +0200, Amrein-Marie Christophe
<x...@freesurf.fr>:
>Personnellement, depuis que j'ai touché à Java et .Net, je
>gère les erreurs en C++ sous forme d'exceptions. Toujours.
En gros, tu programmes en Java tout en utilisant un
compilateur C++ ? Ça ressemble aux gens (plus nombreux) qui
programment en C tout en utilisant un compilateur C++ (et qui,
pour en revenir au sujet, n'utilisent jamais les exceptions,
puisqu'elles n'existent pas en C++).
On Sun, 05 Jul 2009 05:49:54 +0200, Amrein-Marie Christophe
:
>Personnellement, depuis que j'ai touché à Java et .Net, je
>gère les erreurs en C++ sous forme d'exceptions. Toujours.
En gros, tu programmes en Java tout en utilisant un
compilateur C++ ? Ça ressemble aux gens (plus nombreux) qui
programment en C tout en utilisant un compilateur C++ (et qui,
pour en revenir au sujet, n'utilisent jamais les exceptions,
puisqu'elles n'existent pas en C++).
On Sat, 04 Jul 2009 16:22:43 +0200, Wykaaa :
>> tentative de prendre le cinquième élément d'un tableau qui
>> n'en comporte que trois, etc.
>L'exemple du tableau est plutôt un bug de programmation.
T'es sûr ?
Imagine le cas suivant : j'ai chargé un fichier ligne par
ligne dans un vector<string>. Les spécifications de ce fichier
indiquent clairement qu'il doit contenir 5 lignes. Si le
fichier est mal formé, je ne peux qu'arrêter le programme.
Je pourrais écrire :
if (lignes.size() < 5)
throw quelque_chose;
f (lignes[4]);
Sauf que... la fonction at() fait déjà ça pour moi ! Pourquoi
réinventer la roue ?
On Sat, 04 Jul 2009 16:22:43 +0200, Wykaaa <wyk...@yahoo.fr>:
>> tentative de prendre le cinquième élément d'un tableau qui
>> n'en comporte que trois, etc.
>L'exemple du tableau est plutôt un bug de programmation.
T'es sûr ?
Imagine le cas suivant : j'ai chargé un fichier ligne par
ligne dans un vector<string>. Les spécifications de ce fichier
indiquent clairement qu'il doit contenir 5 lignes. Si le
fichier est mal formé, je ne peux qu'arrêter le programme.
Je pourrais écrire :
if (lignes.size() < 5)
throw quelque_chose;
f (lignes[4]);
Sauf que... la fonction at() fait déjà ça pour moi ! Pourquoi
réinventer la roue ?
On Sat, 04 Jul 2009 16:22:43 +0200, Wykaaa :
>> tentative de prendre le cinquième élément d'un tableau qui
>> n'en comporte que trois, etc.
>L'exemple du tableau est plutôt un bug de programmation.
T'es sûr ?
Imagine le cas suivant : j'ai chargé un fichier ligne par
ligne dans un vector<string>. Les spécifications de ce fichier
indiquent clairement qu'il doit contenir 5 lignes. Si le
fichier est mal formé, je ne peux qu'arrêter le programme.
Je pourrais écrire :
if (lignes.size() < 5)
throw quelque_chose;
f (lignes[4]);
Sauf que... la fonction at() fait déjà ça pour moi ! Pourquoi
réinventer la roue ?
On Jul 5, 6:15 am, Fabien LE LEZ wrote:Personnellement, depuis que j'ai touché à Java et .Net, je
gère les erreurs en C++ sous forme d'exceptions. Toujours.En gros, tu programmes en Java tout en utilisant un
compilateur C++ ? [...]
n'utilisent jamais les exceptions,
puisqu'elles n'existent pas en C.
N'importe quoi, en somme.
On Jul 5, 6:15 am, Fabien LE LEZ <grams...@gramster.com> wrote:
Personnellement, depuis que j'ai touché à Java et .Net, je
gère les erreurs en C++ sous forme d'exceptions. Toujours.
En gros, tu programmes en Java tout en utilisant un
compilateur C++ ? [...]
n'utilisent jamais les exceptions,
puisqu'elles n'existent pas en C.
N'importe quoi, en somme.
On Jul 5, 6:15 am, Fabien LE LEZ wrote:Personnellement, depuis que j'ai touché à Java et .Net, je
gère les erreurs en C++ sous forme d'exceptions. Toujours.En gros, tu programmes en Java tout en utilisant un
compilateur C++ ? [...]
n'utilisent jamais les exceptions,
puisqu'elles n'existent pas en C.
N'importe quoi, en somme.
James Kanze a écrit :
> On Jul 5, 6:15 am, Fabien LE LEZ wrote:
>>> Personnellement, depuis que j'ai touché à Java et .Net, je
>>> gère les erreurs en C++ sous forme d'exceptions. Toujours.
>> En gros, tu programmes en Java tout en utilisant un
>> compilateur C++ ? [...]
?!
>> n'utilisent jamais les exceptions,
>> puisqu'elles n'existent pas en C.
v'oui, bien avant leur normalisation en C++ on codait les
exceptions par des setjmp() / longjmp() 100% C mais ça ne doit
pas exister puisque tu le dis.
> N'importe quoi, en somme.
comme tu le dis !
James Kanze a écrit :
> On Jul 5, 6:15 am, Fabien LE LEZ <grams...@gramster.com> wrote:
>>> Personnellement, depuis que j'ai touché à Java et .Net, je
>>> gère les erreurs en C++ sous forme d'exceptions. Toujours.
>> En gros, tu programmes en Java tout en utilisant un
>> compilateur C++ ? [...]
?!
>> n'utilisent jamais les exceptions,
>> puisqu'elles n'existent pas en C.
v'oui, bien avant leur normalisation en C++ on codait les
exceptions par des setjmp() / longjmp() 100% C mais ça ne doit
pas exister puisque tu le dis.
> N'importe quoi, en somme.
comme tu le dis !
James Kanze a écrit :
> On Jul 5, 6:15 am, Fabien LE LEZ wrote:
>>> Personnellement, depuis que j'ai touché à Java et .Net, je
>>> gère les erreurs en C++ sous forme d'exceptions. Toujours.
>> En gros, tu programmes en Java tout en utilisant un
>> compilateur C++ ? [...]
?!
>> n'utilisent jamais les exceptions,
>> puisqu'elles n'existent pas en C.
v'oui, bien avant leur normalisation en C++ on codait les
exceptions par des setjmp() / longjmp() 100% C mais ça ne doit
pas exister puisque tu le dis.
> N'importe quoi, en somme.
comme tu le dis !
n'utilisent jamais les exceptions,
puisqu'elles n'existent pas en C.v'oui, bien avant leur normalisation en C++ on codait les
exceptions par des setjmp() / longjmp() 100% C mais ça ne doit
pas exister puisque tu le dis.
Ce n'est pas moi qui l'a dit
N'importe quoi, en somme.comme tu le dis !
Intéressant exemple des coupes très sélectives, pour qu'on ne
voit plus de quoi il s'agit.
(Le « n'importe quoi », en fait, faisait référence à la pratique
en Java. Surtout l'idée de vouloir utiliser une exception pour
quelque chose comme VirtualMachineError.)
n'utilisent jamais les exceptions,
puisqu'elles n'existent pas en C.
v'oui, bien avant leur normalisation en C++ on codait les
exceptions par des setjmp() / longjmp() 100% C mais ça ne doit
pas exister puisque tu le dis.
Ce n'est pas moi qui l'a dit
N'importe quoi, en somme.
comme tu le dis !
Intéressant exemple des coupes très sélectives, pour qu'on ne
voit plus de quoi il s'agit.
(Le « n'importe quoi », en fait, faisait référence à la pratique
en Java. Surtout l'idée de vouloir utiliser une exception pour
quelque chose comme VirtualMachineError.)
n'utilisent jamais les exceptions,
puisqu'elles n'existent pas en C.v'oui, bien avant leur normalisation en C++ on codait les
exceptions par des setjmp() / longjmp() 100% C mais ça ne doit
pas exister puisque tu le dis.
Ce n'est pas moi qui l'a dit
N'importe quoi, en somme.comme tu le dis !
Intéressant exemple des coupes très sélectives, pour qu'on ne
voit plus de quoi il s'agit.
(Le « n'importe quoi », en fait, faisait référence à la pratique
en Java. Surtout l'idée de vouloir utiliser une exception pour
quelque chose comme VirtualMachineError.)