Moi, les exceptions, j'en prêchais l'usage avant, à tort et à travers.
Depuis, je me suis aperçu que:
c'est pas portable, potentiellement d'une version à l'autre d'un même compilo. Je parle de l'ABI. Ça, c'est le truc qui m'a fait cesser de les utiliser.
ça bloat mon code, quand je veux réellement traiter toutes les erreurs, et bien plus que des séries de ifs construites correctement. J'utilise de l'objet, juste, j'évite maintenant les exceptions.
ça «booste» le binaire de ~10%. Un binaire de 10Mio fera en moyenne 11Mio à cause du code lié aux exceptions qui est du code principalement mort puisque, en effet, exécuté que si une exception est lancée. Bien plus lourd que des ifs donc. Ce boost n'est pas nécessairement souhaitable sur tous les matériels.
Bref, je pense que c'est vraiment un choix des développeurs à l'heure actuelle (pour le C++).
Par contre, si on joue sans exceptions, il faut dans ce cas faire très attention quand on utilise la STL, qui force quasiment l'usage des exceptions (faire foo.reserve(10);if(foo.capacity()<10){do_that;} avant le moindre push/emplace, notamment). D'un autre côté, au moins, ça force le dev à faire des reserve, et ça fait réfléchir à comment n'en faire qu'une seule fois. Parce que j'ai vu plus d'un soft en C++ être méchamment ralentit par les allocations mémoires pour un oui ou un non.
[^] # Re: Je n'aime pas la SFML
Posté par freem . En réponse à la dépêche SDL ou SFML ? Ne choisissez plus, prenez Gamedev Framework (gf). Évalué à 6.
Moi, les exceptions, j'en prêchais l'usage avant, à tort et à travers.
Depuis, je me suis aperçu que:
Bref, je pense que c'est vraiment un choix des développeurs à l'heure actuelle (pour le C++).
Par contre, si on joue sans exceptions, il faut dans ce cas faire très attention quand on utilise la STL, qui force quasiment l'usage des exceptions (faire
foo.reserve(10);if(foo.capacity()<10){do_that;}avant le moindre push/emplace, notamment). D'un autre côté, au moins, ça force le dev à faire des reserve, et ça fait réfléchir à comment n'en faire qu'une seule fois. Parce que j'ai vu plus d'un soft en C++ être méchamment ralentit par les allocations mémoires pour un oui ou un non.