다음을 통해 공유


표준 예외 형식 사용

참고 항목

이 콘텐츠는 Pearson Education, Inc.의 허가를 받아 프레임워크 디자인 지침: 재사용 가능한 .NET 라이브러리에 대한 규칙, 관용어 및 패턴, 2판에서 재인쇄되었습니다. 이 버전은 2008년에 출판되었으며 이후 3판에서 완전히 개정되었습니다. 이 페이지의 정보 중 일부는 최신 정보가 아닐 수 있습니다.

이 섹션에서는 프레임워크에서 제공하는 표준 예외와 해당 사용법에 대한 세부 사항을 설명합니다. 이 목록은 결코 완전한 것이 아닙니다. 다른 Framework 예외 형식의 사용법은 .NET Framework 참조 설명서를 참조하세요.

Exception 및 SystemException

System.Exception 또는 System.SystemException을 throw하지 마세요.

❌ 다시 throw하려는 경우가 아니면 프레임워크 코드에서 System.Exception 또는 System.SystemException을 catch하지 마세요.

❌ 최상위 예외 처리기를 제외하고 System.Exception 또는 System.SystemException을 catch하지 마세요.

ApplicationException

ApplicationException에서 throw하거나 파생시키지 마세요.

InvalidOperationException

✔️ 개체가 부적절한 상태에 있는 경우 InvalidOperationException을 throw하세요.

ArgumentException, ArgumentNullException 및 ArgumentOutOfRangeException

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

✔️ ArgumentException의 하위 클래스 중 하나를 throw할 때 ParamName 속성을 설정하세요.

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

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

NullReferenceException, IndexOutOfRangeException 및 AccessViolationException

❌ 공개적으로 호출 가능한 API가 명시적으로 또는 암시적으로 NullReferenceException, AccessViolationException 또는 IndexOutOfRangeException을 throw하는 것을 허용하지 마세요. 이러한 예외는 실행 엔진에 의해 예약되고 throw되며 대부분의 경우 버그를 나타냅니다.

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

StackOverflowException

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

StackOverflowException을 catch하지 마세요.

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

OutOfMemoryException

❌ 명시적으로 OutOfMemoryException을 throw하지 마세요. 이 예외는 CLR 인프라에 의해서만 발생됩니다.

ComException, SEHException 및 ExecutionEngineException

COMException, ExecutionEngineExceptionSEHException을 명시적으로 throw하지 마세요. 이러한 예외는 CLR 인프라에 의해서만 발생됩니다.

Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

Pearson Education, Inc의 동의로 재인쇄. 출처: Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition 작성자: Krzysztof Cwalina 및 Brad Abrams, 출판 정보: Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

참고 항목