Bonjour tout le monde,
je suis en train de me remettre au c++ apr�s un gros d�tour vers d'autres langages plus... lents, on va dire
Et l� je tombe sur une question existentielle. Je vous explique:
Je fais un petit programme. Il va comporter 3 classes de taille moyenne, ainsi que quelques petites fonctions et structures utilitaires. Ce programme est un "one shot": on le lance dans une console cmd, il fait des trucs, il g�n�re son r�sultat, puis il se ferme.
Les trois classes en question acc�dent � des ressources fortement susceptibles de g�n�rer des exceptions lors de leur acc�s. Heureusement pour moi, je peux me permettre d'acc�der � ces ressources une fois, r�cup�rer ce dont j'ai besoin, puis lib�rer cette ressource. Ces ressources sont des fichiers, de la base de donn�e, et quelques appels � des web services.
Donc, j'ai opt� pour du RAII: pour chacune de ces 3 classes, c'est lors de l'appel au constructeur que je r�cup�re les donn�es dont j'ai besoin. Et c'est l� que j'ai un gros doute, car du coup, mon main() ressemble � ceci:
Ce qui me turlupine, c'est ce groc bloc try/catch dans le main. Depuis toujours, il me semblait que ce genre de pratique c'�tait tr�s mal, mais aujourd'hui je suis incapable de dire pourquoi. Et cette fa�on de faire me convient particuli�rement, au moins dans ce cas l�: un petit programme qu'on lance une fois, dont l'ex�cution est rapide (quelques secondes normalement), et que si �a marche pas, on veut juste savoir pourquoi et relancer la commande.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 int main(int argc, char** argv) { //... gestion des paramètres d'entrée try { GIS_Reader reader( argv[1] ); GIS_XemManager xem_manager( argv[2] ); GIS_Computer computer( reader, xem_manager ); computer.Compute(); } catch( exception & ex ) { // message d'erreur } }
Donc voil�, c'�tait juste pour savoir si vous savez pourquoi ce type de pratique est d�conseill�e, et si dans mon cas �a peut vraiment poser des probl�mes.
Cordialement.
r0d.
Partager