다음을 통해 공유


CA2201: 예약된 예외 형식을 발생시키지 마십시오.

속성
규칙 ID CA2201
제목 예약된 예외 형식을 발생시키지 마세요.
범주 사용 현황
수정 사항이 주요 변경인지 여부 주요 변경
.NET 9에서 기본적으로 사용 아니요

원인

메서드는 너무 일반적이거나 런타임에서 예약된 예외 형식을 발생합니다.

규칙 설명

다음 예외 형식은 너무 일반적이어서 사용자에게 충분한 정보를 제공할 수 없습니다.

다음 예외 형식은 예약되어 있으며 공용 언어 런타임에서만 throw되어야 합니다.

일반적인 예외를 throw하지 마세요.

라이브러리 또는 SystemException프레임워크에서 Exception 일반적인 예외 형식을 throw하는 경우 소비자가 처리 방법을 모르는 알 수 없는 예외를 포함하여 모든 예외를 catch하도록 강제합니다.

대신 프레임워크에 이미 있는 파생된 형식을 throw하거나 Exception에서 파생되는 고유한 형식을 만듭니다.

특정 예외 throw

다음 표에서는 속성의 접근자에 있는 값 매개 변수를 포함하여 다양한 형식의 잘못된 인수에 set 대해 throw할 예외를 보여줍니다.

잘못된 인수 예외
null 참조 ArgumentNullException
허용되는 값 범위(예: 컬렉션 또는 목록의 인덱스)를 벗어남 ArgumentOutOfRangeException
잘못된 enum InvalidEnumArgumentException
메서드의 매개 변수 사양을 충족하지 않는 형식(예: 의 ToString(String)형식 문자열)을 포함합니다. FormatException
그 외 잘못됨 ArgumentException

다음 표에서는 다양한 유형의 잘못된 작업에 대해 throw할 예외를 보여 줍니다.

잘못된 작업 예외
개체의 현재 상태에 대한 작업이 잘못되었습니다. InvalidOperationException
작업은 삭제된 개체에 대해 수행됩니다. ObjectDisposedException
작업이 지원되지 않습니다(예: 읽기 위해 열린 스트림에서 재정 Stream.Write 의됨). NotSupportedException
변환하면 오버플로가 발생합니다(예: 명시적 캐스트 연산자 오버로드). OverflowException

다른 모든 경우에는 Exception에서 파생되는 고유한 형식을 만들어 이를 throw하는 것이 좋습니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 throw된 예외의 형식을 예약된 형식 중 하나가 아닌 특정 형식으로 변경합니다.

경고를 표시하지 않는 경우

이 규칙에서는 경고를 표시해야 합니다.