Les exceptions... que des défauts à vous entendre. Franchement, c'est l'idéal pour propager une erreur. Pourquoi utiliser des codes d'erreurs illisible et incompréhensible...
Les exceptions couteuses en cpu ? mais franchement, on s'en fou. C'est lisible et pratique, et pas fait pour les chiens.
DeAtHCrAsH => "Plutot que de perdre du temps sur comment contourner les erreurs et
plantage de ton programme, concentre toi plutot a faire un code propre
et blindé."
Tu as l'air de penser qu'une exception est faite pour gérer les erreurs et plantages du programme. Une exception n'est pas faite pour détecter des bugs et des dépassements de mémoire. Elle est faite pour propager une erreur prévue par le programmeur. Genre tu as une fonction pour charger une image, la méthode basique est de retourner un code d'erreur, l'autre est d 'utiliser une exception contenant le code d'erreur, le fichier concerné et un message d'erreur. Ca permet ensuite d'afficher un message compréhensible à l'utilisateur du programme.
Evidemment on peut toujours utiliser des codes d'erreurs:
if (ret == )
if (ret == )
Les deux méthodes permettent de faire les memes choses, mais l'une est pratique, l'autre pas.
LaTatadu91 => "autre question tu fais remonter l'exception ok, mais comment tu sais quelle erreur a été générée?pour pouvoir traiter les cas..."
A chaque erreur, tu as un type d'exception particulier:
class Exception_Images : public Exception
{...};
class Exception_Images_Chargement : public Exception_Images
{...};
class Exception_Images_Format_Fichier vide : class Exception_Images_Chargement
{...};
class Exception_Images_Format_Inconnu: class Exception_Images_Chargement
{...};
Ce genre de décomposition te permet ensuite de traiter les exceptions par cas et par catégorie. Mais c'est pas nécessaire, tu peux juste avoir la classe Exception_Images qui prend en paramètre un message d'erreur, mais lors du catch, tu pourras pas traiter précisément les cas.
Donc les exceptions oui pour gérer les situations prévues (bien plus
puissant qu'un code d'erreur), et non pour gérer les erreurs du
programmeurs. Evidemment, si ta grosses préoccupation, c'est la performance, mieux vaut éviter.
PS: C'est mon point de vue évidemment.