Bonjour à toute la communauté,

Je suis tombé sur un code que je n'ai pas apprécié qui, pour afficher un message à l'utilisateur, levait des exceptions.
Voici le code :
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
            If Chose > 0 Then
                If machin = 0 Then
                    If truc > -1 And bazar <> 1684 Then
                        ' ...
 
                    ElseIf machin > -1 Then
                        ' ...
                        If truc > 0 Then
                            '...
                        Else
                            Throw New ApplicationException("Il y a un problème pour le chargement de tous les calculs - comparaisonGRH ligne 198") ' Bon c'est la ligne 502 mais c'est pas grave...
                        End If
                    Else
                        Throw New ApplicationException("Vous n'appartenez à aucun groupe autorisé à accéder à ce programme.")
                    End If
                Else
                    Throw New ApplicationException("Il y a un problème dans cAutoritésDeValidation.DetecterInfosLdap() - comparaisonGRH 204")
                End If
            Else
                Throw New ApplicationException("Vous ne disposez pas des autorités requises, veuillez vous adresser à votre administrateur.")
            End If
        Catch ex As Exception
            MessageBox.Show(ex.ToString, "MU0127VB - Comparaison GRH fichier Sepa et fichier log", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Application.Exit()
        End Try
J'en ai parlé à un autre dev qui me dit faire pareil.
Il s'en suit une recherche sur la bonne gestion des exceptions, je tombe sur un tas d'articles qui me laissent penser que ce n'est pas propre.
Notamment celui-ci : http://kerrubin.wordpress.com/2014/0...es-exceptions/
Les exceptions sont coûteuses en terme de performance.
Donc les utiliser avec parcimonie peut être une bonne idée.
Un processus de validation des arguments (Code Contracts ?) est une meilleure idée.
et celui-ci : http://codebuild.blogspot.fr/2012/01...exception.html
Don't manage business logic with exceptions. Use conditional statements instead. If a control can be done with if-else statement clearly, don't use exceptions because it reduces readability and performance (e.g. null control, divide by zero control).
(il y en a plein d'autre...)

Vous en pensez quoi?