Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Faut-il désactiver les exceptions dans une application en production ?

4 réponses
Avatar
Gilles TOURREAU
Salut tout le monde !

J'ai une application qui va passer dans pas longtemps en production.
J'ai des fonctions qui contiennent du code permettant de vérifier la
validité des paramètres :

Par exemple :

public void MaFonction(int x)
{
if (x < 0)
throw ..... //Lever une excecption que x est négatif

....
}

Je voudrais savoir s'il faut garder ces vérifications lorsque l'application
est en production, ou faut-il les enlever à l'aide du pré-processeur comme
ceci :

public void MaFonction(int x)
{
#if DEBUG
if (x < 0)
throw .....
#endif
....
}

Cordialement

--
Gilles TOURREAU
Responsable Informatique
gilles.tourreau@pos.fr

Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr

4 réponses

Avatar
Faust
ça dépend de ce que peut recevoir tes fonctions: si en production elles
sont susceptibles de recevoir une valeur négative (pour l'exemple) dans
un contexte d'utilisation normal alors il faut les laisser

si les exceptions n'ont été mises que dans un but de debuggage et qu'en
utilisation normale, ces fonctions ne recevront jamais une valeur
négative ou ne sont pas perturbées par une valeur négative alors ce
type d'exception s'appellent des Assertions (je suis pas un spécialiste
de la chose mais ça m'étonnerais que VS ne gère pas ce genre de chose)

et les assertions sont normalement automatiquement désactivées lors
d'une compilation de type Release. Pas besoin de directives de
compilation.

/_Gilles TOURREAU_ a émis l'idée suivante/ :
Salut tout le monde !

J'ai une application qui va passer dans pas longtemps en production.
J'ai des fonctions qui contiennent du code permettant de vérifier la validité
des paramètres :

Par exemple :

public void MaFonction(int x)
{
if (x < 0)
throw ..... //Lever une excecption que x est négatif

....
}

Je voudrais savoir s'il faut garder ces vérifications lorsque l'application
est en production, ou faut-il les enlever à l'aide du pré-processeur comme
ceci :

public void MaFonction(int x)
{
#if DEBUG
if (x < 0)
throw .....
#endif
....
}

Cordialement




--
Mephitiquement votre,
Faust
ICQ #161252577
Avatar
Michael Moreno
> et les assertions sont normalement automatiquement désactivées lors d'une
compilation de type Release. Pas besoin de directives de compilation.



en effet, voir System.Diagnostics.Debug.Assert();

--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/
Avatar
Gilles TOURREAU
OK, c'est exactement ce que je cherchais...

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
"Michael Moreno" a écrit dans le message
de news:
et les assertions sont normalement automatiquement désactivées lors d'une
compilation de type Release. Pas besoin de directives de compilation.



en effet, voir System.Diagnostics.Debug.Assert();

--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/




Avatar
adebaene
Gilles TOURREAU wrote:
Salut tout le monde !

J'ai une application qui va passer dans pas longtemps en production.
J'ai des fonctions qui contiennent du code permettant de vérifier la
validité des paramètres :

Par exemple :

public void MaFonction(int x)
{
if (x < 0)
throw ..... //Lever une excecption que x est négatif

....
}

Je voudrais savoir s'il faut garder ces vérifications lorsque l'applica tion
est en production, ou faut-il les enlever à l'aide du pré-processeur comme
ceci :

public void MaFonction(int x)
{
#if DEBUG
if (x < 0)
throw .....
#endif
....
}



Surtout pas!

Si le cas "anormal" (x<0 dans ton exemple) se produit, il vaut bien
mieux planter immédiatement l'application plutôt que de la laisser
continuer en ignorant silencieusement l'erreur : l'utilisateur rale
quand une application plante, mais c'est moins grave que d'avoir une
application qui produit des résultats complètement faux (ou pire,
efectue des opérations fausses ayant des conséquences graves).

Bien sûr, la "bonne" solution consiste à attraper les erreurs plus
haut dans la pile d'appel avec un catch et à les traiter...

Arnaud
MVP - VC