Вот стандартный сценарий:
if(string.IsNullOrEmpty(Configuration.AppSettings["foobar"]))
throw new SomeStandardException("Application not configured correctly, bozo.");
Проблема в том, что я не совсем уверен, , какое исключение SomeStandardException
должно быть.
Я изучил 3.5 Framework и нашел двух вероятных кандидатов: ConfigurationException
и ConfigurationErrorsException
.
System.Configuration.ConfigurationException
Исключение, которое выдается, когда
ошибка конфигурации системы
произошло.
Замечания
ConfigurationException
Исключение составляет
бросить, если приложение пытается
читать или записывать данные в
файл конфигурации, но есть
безуспешными. Некоторые возможные причины
для этого может включать в себя искаженный XML в
файл конфигурации, файл
вопросы разрешения и конфигурации
свойства со значениями, которые не являются
действительный.
Примечание:
Объект ConfigurationException
поддерживается для обратной совместимости.
ConfigurationErrorsException
объект заменяет его для
Конфигурация системы.
Это исключение на самом деле звучит идеально для того, что мне нужно, но оно помечено как устаревшее, так что ixnay на atthay.
Это подводит нас к совершенно загадочным ConfigurationErrorsException
:
System.Configuration.ConfigurationErrorsException
Текущее значение не является одним из
Значения EnableSessionState.
Как видите, его документация совершенно бесполезна. (Это относится как к локальной, так и к интерактивной справке.) Проверка самого класса показывает, что это радикальное излишество для того, что я хочу.
Короче говоря, мне нужно стандартное исключение, которое должно создаваться, если параметр конфигурации приложения отсутствует или содержит недопустимое значение. Вы могли бы подумать, что в платформе есть такое исключение, запрограммированное для приложений (По-видимому, так и было, но оно было помечено как устаревшее и было заменено чем-то намного большего по объему.)
Какие решения, если таковые имеются, вы, ребята, используете для этого, и мне придется смириться с этим и выдвинуть свое собственное исключение для этого?
Редактировать приложения
Некоторые спрашивают, могу ли я предоставить значение по умолчанию и продолжаю. В некоторых случаях да, и в этих случаях исключение не будет выброшено. Однако для определенных настроек это не будет применяться. Например: имена и учетные данные сервера базы данных, серверы аутентификации и пути к установленным сторонним приложениям.
Стоит также отметить, что приложение, над которым я в основном работаю, является консольным приложением, работающим в пакетном режиме, и я хочу, чтобы оно генерировало исключение, которое перехватывается основным методом и соответствующим образом регистрируется, если это не так. соответствующим образом настроен. (Это устаревший код, который я унаследовал, и в настоящее время только предполагает все хорошо.)