[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux-team] [OUT OF TOPIC][C++] Lacunes en C++
On Tue, Jan 25, 2000 at 04:36:05PM +0100, Michael Stilmant wrote:
> Mais ... j'aime pas trop (mais j'apprécie ta réponse) ce genre de
> programmation à la Microsoft
à la Microsoft ??
Les exceptions n'ont rien à avoir avec M$. C'est une partie intégrante
du C++. Il existe bien encore quelques vieux compilateurs C++ sur des
UNIX crasseux (càd. pas Linux ;)) qui ne connaissent pas les exceptions,
mais si tu travailles sur Linux, *BSD, AIX (CSET, Visual Age), Solaris,
HP-UX, ..., il n'y a aucun problème ;))
> il me semble avoir entendu quelque part un truc du genre, il faut
> toujours catcher les exceptions sinon c'est une erreur fatal. (Cfr dr
> watson)
Euh... si tu veux, oui (analogie très bizarre, mais bon) :)
Mais bon, là, si tu ne testes pas le code de retour de ta fonction, tu
vas accéder à un pointer NULL et paf! segmentation fault.
Comme ceci, tu as la possibilité d'intercepter proprement l'erreur.
Et puis c'est la façon de faire en C++ ;)
Tu peux aussi prévoir un attribut booléen (p.ex. bIsValid) dans ta classe,
qui est positionnée à TRUE ou FALSE, selon si le constructeur a eu un
problème ou non. Tu ajoutes encore une méthode isValid() pour vérifier,
mais tu es bien obligé de chaque fois vérifier l'objet instancié...
p.ex.:
class Philo
{
private:
boolean bIsValid;
Foo* foo;
public:
Philo()
{
foo = fonction();
bIsValid = foo ? TRUE : FALSE;
}
boolean isValid() const { return bIsValid; }
};
...
Philo* philo;
...
philo = new Philo;
if (! philo->isValid())
{
// erreur
...
}
Mais, là, avoue que le try/catch est beaucoup plus élégant!
Et puis, tu peux faire le catch beaucoup plus loin...
> si quelqu'un utilise cette classe, elle doit être au courrant non ?
La classe ? Non, ça c'est dans Java ;)
La personne ? Ben oui...
> et que ce passe t'il si une variable de type philo_with_throw est
> déclarée en dehors de toutes fonctions, en global ?
Le try/catch se fait en global...
> rem: j'ai jamais aimé la philo car il y avait toujours plus de questions
> lors d'une réponse ...
héhé ;)
--
-o) / Pascal Bleser ATOS Payment Systems|
/\\ \ C++/UNIX Development Aachen, Germany|
_\_v \<guru@linuxbe.org> <pbleser@atos-group.com>|
---------------------------------------------------|
Heuristics are bug ridden by definition. If they :
didn't have bugs, then they'd be algorithms. :
---------------------------------------------------'
---------
Visit the Linux Supertore Online: http://www.redcorp.com !
If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.
Archive of the list: http://tania.be.linux.org/