다음을 통해 공유


표준 예외 형식 사용

비고

이 콘텐츠는 프레임워크 디자인 지침: 재사용 가능한 .NET 라이브러리에 대한 규칙, 관용구 및 패턴, 2판에서 Pearson Education, Inc.의 권한으로 다시 인쇄됩니다. 이 버전은 2008년에 출판되었으며, 이후 세 번째 에디션에서 완전히 수정되었습니다. 이 페이지의 일부 정보는 오래된 것일 수 있습니다.

이 섹션에서는 프레임워크에서 제공하는 표준 예외 및 해당 사용량에 대한 세부 정보를 설명합니다. 목록은 전혀 완전하지 않습니다. 다른 프레임워크 예외 형식을 사용하려면 .NET Framework 참조 설명서를 참조하세요.

Exception 및 SystemException

❌ 던지지System.Exception 마세요System.SystemException.

❌프레임워크 코드 내에서 System.Exception 또는 System.SystemException를 catch하지 마세요, unless 다시 던지려고 하는 경우가 아니라면.

❌ 최상위 예외 처리기를 제외하고 catch System.Exception 하거나 System.SystemException사용하지 마세요.

ApplicationException

❌에서 파생하거나 ApplicationException를 throw하지 마세요.

InvalidOperationException (잘못된 작업 예외)

✔️ 개체가 부적절한 상태이면 InvalidOperationException를 발생시키세요.

ArgumentException, ArgumentNullException 및 ArgumentOutOfRangeException

✔️ 잘못된 인수가 멤버에 전달되는 경우 DO throw ArgumentException 또는 해당 하위 형식 중 하나입니다. 해당하는 경우 가장 파생된 예외 유형을 선호합니다.

✔️ ParamName의 서브클래스 중 하나를 throw할 때 ArgumentException 속성을 설정합니다.

이 속성은 예외가 발생한 매개 변수의 이름을 나타냅니다. 생성자 오버로드 중 하나를 사용하여 속성을 설정할 수 있습니다.

✔️ 속성 setter의 암시적 값 매개 변수 이름으로 value를 사용하세요.

예외 유형: NullReferenceException, IndexOutOfRangeException 및 AccessViolationException

❌공개적으로 호출 가능한 API가 명시적으로 또는 암시적으로 NullReferenceException, AccessViolationException, 또는 IndexOutOfRangeException을 throw하지 않도록 하십시오. 이러한 예외는 실행 엔진에 의해 예약되고 발생하며, 대부분의 경우 오류를 나타냅니다.

이러한 예외를 throw하지 않도록 인수 검사를 수행합니다. 이러한 예외를 throw하면 시간이 지남에 따라 변경될 수 있는 메서드의 구현 세부 정보가 표시됩니다.

StackOverflowException

❌ 명시적으로 throw StackOverflowException하지 마세요. 예외는 CLR에서만 명시적으로 throw되어야 합니다.

❌ catch StackOverflowException하지 마세요.

임의 스택 오버플로가 있는 상태에서 일관성을 유지하는 관리 코드를 작성하는 것은 거의 불가능합니다. CLR의 관리되지 않는 부분은 임의 스택 오버플로에서 백업하는 대신 프로브를 사용하여 스택 오버플로를 잘 정의된 위치로 이동하여 일관성을 유지합니다.

메모리 부족 예외(OutOfMemoryException)

❌ 명시적으로 throw OutOfMemoryException하지 마세요. 이 예외는 CLR 인프라에서만 던져집니다.

ComException, SEHException 및 ExecutionEngineException

❌명시적으로 throwCOMExceptionExecutionEngineExceptionSEHException하지 마세요. 이러한 예외는 CLR 인프라에 의해서만 발생해야 합니다.

Microsoft Corporation의 일부 저작권 2005, 2009. 모든 권리 보유.

프레임워크 디자인 지침에서 Pearson Education, Inc.의 권한으로 재인쇄 : 재사용 가능한 .NET 라이브러리에 대한 규칙, 관용구 및 패턴, Krzysztof Cwalina 및 Brad Abrams의 제2판, Microsoft Windows 개발 시리즈의 일환으로 Addison-Wesley Professional이 2008년 10월 22일 출판했습니다.

참고하십시오