다음은 표준 시나리오입니다.
if(string.IsNullOrEmpty(Configuration.AppSettings["foobar"]))
throw new SomeStandardException("Application not configured correctly, bozo.");
문제는 어떤 예외 SomeStandardException
가되어야하는지 완전히 확실하지 않다는 것입니다.
나는 3.5 프레임 워크를 숙독하고 두 후보들을 발견 ConfigurationException
하고 ConfigurationErrorsException
.
System.Configuration.ConfigurationException
구성 시스템 오류가 발생했을 때 throw되는 예외입니다.
비고
ConfigurationException
응용 프로그램을 시도 읽거나 구성 파일에 기록 데이터를하지만 실패 할 경우 예외가 발생합니다. 이에 대한 몇 가지 가능한 이유에는 구성 파일의 잘못된 XML, 파일 권한 문제 및 값이 유효하지 않은 구성 속성이 포함될 수 있습니다.노트 :
ConfigurationException
개체의 호환성을 유지한다.ConfigurationErrorsException
개체가 구성 시스템을 대체합니다.
이 예외는 실제로 내가 필요한 것에 완벽하게 들리지만 쓸모없는 것으로 표시되었으므로 atthay에 대해 ixnay.
이것은 우리를 완전히 혼란스럽게 만듭니다 ConfigurationErrorsException
.
System.Configuration.ConfigurationErrorsException
현재 값이 EnableSessionState 값 중 하나가 아닙니다.
보시다시피 문서는 완전히 쓸모가 없습니다. (로컬 도움말과 온라인 도움말 모두에서 그렇습니다.) 수업 자체를 살펴보면 내가 원하는 것에 대해 과감한 과도 함을 알 수 있습니다.
간단히 말해 애플리케이션 구성 설정이 없거나 잘못된 값이 포함 된 경우 throw되어야하는 표준 예외가 필요합니다. 응용 프로그램에서 사용할 수 있도록 프레임 워크에 이러한 예외가 포함되어 있다고 생각할 것입니다. (분명히 그랬지만 쓸모없는 것으로 표시 되었고 범위가 훨씬 더 큰 것으로 대체되었습니다 .)
어떤 해결책이 있다면, 여러분은 이것을 위해 사용하고 있습니까? 그리고 나는 이것을 빨아 들여 이것에 대한 내 자신의 예외를 굴려야합니까?
부록 편집
일부는 내가 기본값을 제공 할 수 있는지 여부를 묻고 계속합니다. 특정 경우에는 예, 이러한 경우에는 예외가 발생하지 않습니다. 그러나 특정 설정의 경우 적용되지 않습니다. 예 : 데이터베이스 서버 이름 및 자격 증명, 인증 서버 및 설치된 타사 응용 프로그램에 대한 경로.
내가 주로 작업하는 애플리케이션은 배치 모드로 실행되는 콘솔 애플리케이션이며, 메인 메서드에서 포착하고 해당 항목이 적절하게 구성되지 않은 경우 적절하게 기록되는 예외를 던지기를 원한다는 점도 주목할 가치가 있습니다. (내가 물려받은 레거시 코드이며 현재 는 모든 것이 복숭아 같다고 가정합니다 .)
System.Configuration.ConfigurationErrorsException
가 업데이트되었습니다.