Voici un scénario standard :
if(string.IsNullOrEmpty(Configuration.AppSettings["foobar"]))
throw new SomeStandardException("Application not configured correctly, bozo.");
Le problème est que je ne suis pas tout à fait certain dont exception SomeStandardException
devrait être.
J'ai parcouru le cadre 3.5 et j'ai trouvé deux candidats possibles : ConfigurationException
et ConfigurationErrorsException
.
System.Configuration.ConfigurationException
L'exception qui est levée lorsqu'une erreur du système de configuration de configuration.
Remarques
Le site
ConfigurationException
exception est est levée si l'application tente de de lire ou d'écrire des données dans le fichier de configuration mais n'y parvient pas mais n'y parvient pas. Certaines raisons possibles peuvent inclure un fichier XML malformé dans dans le fichier de configuration, des fichiers, des problèmes d'autorisation, et des de configuration dont les valeurs ne sont pas valides.Note :
Le site
ConfigurationException
est maintenu pour une compatibilité rétroactive. Le siteConfigurationErrorsException
le remplace pour le système de configuration.
Cette exception semble en fait parfaite pour ce dont j'ai besoin, mais elle a été marquée comme obsolète, donc, ixnay on atthay.
Cela nous amène à la question très déroutante ConfigurationErrorsException
:
System.Configuration.ConfigurationErrorsException
La valeur actuelle n'est pas l'une des valeurs de valeurs de EnableSessionState.
Comme vous pouvez le constater, sa documentation est totalement inutile. (C'est le cas dans l'aide locale et l'aide en ligne.) Un examen de la classe elle-même montre qu'elle est complètement inutile pour ce que je veux.
En bref, j'ai besoin d'une exception standard qui doit être levée lorsqu'un paramètre de configuration de l'application est manquant ou contient une valeur invalide. On pourrait penser que le Framework dispose d'une telle exception pour que les applications puissent l'utiliser. (Apparemment, c'est le cas, mais elle a été marquée comme obsolète et remplacée par quelque chose de semblable). beaucoup plus vaste).
Quelles solutions utilisez-vous, le cas échéant, et vais-je devoir me résigner et créer ma propre exception ?
Modifier les addenda
Certains ont demandé si je pouvais ou non fournir une valeur par défaut, et continuer. Dans certains cas, oui, et dans ces cas, l'exception ne serait pas levée. Cependant, pour certains paramètres, cela ne s'applique pas. Par exemple, les noms et les informations d'identification des serveurs de base de données, les serveurs d'authentification et les chemins d'accès aux applications tierces installées.
Il est également utile de noter que l'application sur laquelle je travaille principalement est une application console fonctionnant en mode batch, et je veux qu'elle lève une exception qui est attrapée par la méthode principale et enregistrée de manière appropriée si la chose n'est pas configurée de manière appropriée. (C'est un code hérité que j'ai hérité, et actuellement juste suppose que tout est chouette).
1 votes
Documentation pour
System.Configuration.ConfigurationErrorsException
a été mis à jour.