bien le bonjour je souhaiterai avoir votre avis sur l'utilisation du try catch dans un developpement?
on m'a dit que c'était une chose merveilleuse mais je souhaiterai avoir l'avis aiguisé de développeurs de renommé.
merci d'avance ++
bien le bonjour je souhaiterai avoir votre avis sur l'utilisation du try catch dans un developpement?
on m'a dit que c'était une chose merveilleuse mais je souhaiterai avoir l'avis aiguisé de développeurs de renommé.
merci d'avance ++
une recherche surn'a jamais tué personne !!!!
Le try catch est une structure tres utile qui te permet de tester un bout de code et si ce traitement gènère une erreure, tu l'a recupère pour faire un autre traitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 try { //ton code } catch (une exception pour quelquechose de précis, ou toutes les exceptions) { le traitement à faire si tu attrape une execption. }
Plus généralement tu t'apercevras que le try catch est impératif pour tout ce qui touche aux entrées / sorties, de toute sorte : accès fichier, accès bdd, nouveau process, etc. Bref, tout ce dont tu ne peux pas être 100% sur de son état.
Pour ce qui est à l'intérieur, tu n'es pas censé en avoir car tu te dois de le maitriser (On ne va pas mettre de NullReferenceException partout -_-)
Les Entrées utilisateurs n'ont pas besoin de try catch, tu dois pouvoir vérifier ses entrées automatiquement et ne pas attendre d'erreur (par exemple utiliser TryParse() que Parse() pour les valeurs, etc. )
Tu dois éviter au maximum d'intercepter "volontairement" une exception. ex : tu n'attends pas que l'exception FileNotFoundException se déclenches : tu tests d'abord l'existence du fichier, et ensuite tu encapsules le traitement dans un try catch, ou evidemment tu interceptes quand même l'exception : car évidemment entre le test d'existence et le traitement, le fichier peut disparaitre : c'est à ce moment que l'exception devient "imprévisible"
L'exception est donc là pour gérer un cas inattendu / imprévisible.
Donc, rare sont les programmes sans try catch
C'est une partie assez complexe la gestion des exceptions, et ca demande de l'expérience. Et comme ca prend du temps face au impératif du moment, c'est souvent baclé...
Je ne pense pas tout gérer convenablement, mais je sais que je fais bien plus attention qu'il y a quelques mois![]()
Pas très long pourtant un try catch.C'est une partie assez complexe la gestion des exceptions, et ca demande de l'expérience. Et comme ca prend du temps face au impératif du moment, c'est souvent baclé...
Perso j'attrape les exceptions et je les met dans un fichier log.
Après plus qu'à gérer l'instabilité potentielle qui pourrait survenir sur l'application. En fait cela reviens à classer les exceptions en deux cas :
- Les fatals -> on arrête l'appli et on libères les ressources.
- Les autres -> l'appli peut fonctionner, mais on coupe certaine fonctionnalité.
Dans les deux cas il faut prévoir un système d'alerte pour informer de l'état du programme.
ce bout de code pourra, je l'espere, t'aider a comprendre :
sans ce try catch, le code se serait planté!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 int a = 15; int b = 0; try { int c = a/b; // b vaut 0 (division impossible) } catch(DivideByZeroException) { // recuperation de l'erreur MessageBox.Show("Impossible de diviser par zéro"); }
Si tu test que b est différent de 0 avant de faier la division, tu n'as aps de plantage.
Et avoir 0 pour b c'est quelque chose à quoi tu peux t'attendre.
Un meilleur exemple :
Finally t'assure que quoi qu'il se passe, le code qui est dans finally sera exécuté.
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
18
19
20
21
22
23
24
25
26
27
28 if (!Directory.Exist("c:\\temp")) { Directory.CreateDirectory("c:\\temp"); } Try { StreamReader sr = File.CreateText("c:\\temp\\toto.txt"); sr.WriteLine("blabla"); sr.Flush(); sr.close(); if(File.Exist("c:\\temp\\toto.txt")) { File.Move("c:\\temp\\toto.txt", "c:\\temp2\\titi.txt"); } } Catch(FileNotFoundException) { //Fait ce que tu dois faire !!!! } Catch(DirectoryNotFoundException) { //Fait ce que tu dois faire !!!! } Finally { //Le code indipensable à faire, et que tu veux être sur qu'il soit fait }
Partager