CA2201: Nie wywołuj zastrzeżonych typów wyjątków
TypeName |
DoNotRaiseReservedExceptionTypes |
CheckId |
CA2201 |
Kategoria |
Microsoft.Usage |
Złamanie zmiany |
Złamanie |
Przyczyna
Metoda wywołuje typ wyjątku, który jest zbyt ogólne lub który jest zarezerwowany przez aparat plików wykonywalnych.
Opis reguły
Następujące typy wyjątków są zbyt ogólne, aby dostarczyć wystarczające informacje do użytkownika:
Następujące typy wyjątków są zarezerwowane i powinny zostać wygenerowany tylko przez common language runtime:
Nie generują wyjątki ogólne
Jeśli typ ogólny wyjątek, takie jak generowanie Exception lub SystemException w bibliotece lub w ramach to wymusza konsumentów, aby przechwytywać wszystkie wyjątki, łącznie z nieznanych wyjątki, które nie wiedzą, jak obsługiwać.
Zamiast tego throw bardziej pochodny typ, który już istnieje w ramach albo utworzyć własny typ, który pochodzi od Exception.
Rzut szczególne wyjątki.
W poniższej tabeli przedstawiono parametry i których wyjątki od throw podczas sprawdzania poprawności parametru, włączając parametr wartość w akcesor zestawu właściwości:
Parametr Opis |
Wyjątek |
---|---|
nullOdwołanie |
|
Poza dopuszczalny zakres wartości (takie jak indeks dla kolekcji lub lista) |
|
Nieprawidłowy enum wartości |
|
Zawiera format, który nie spełnia specyfikacje parametr metody (takie jak ciąg formatu dla ToString(String)) |
|
W przeciwnym razie nieprawidłowy |
Podczas operacji jest nieprawidłowy dla bieżącego stanu obiektu rzutInvalidOperationException
Podczas wykonywania operacji na obiekcie, który został usunięty throwObjectDisposedException
Kiedy operacja nie jest obsługiwana (na przykład w zastąpiona Stream.Write w strumieniu otwarty do odczytu) throwNotSupportedException
Podczas konwersji spowodowałoby przepełnienie (na przykład w przeciążenie operatora rzutowania jawne) throwOverflowException
Dla wszystkich innych sytuacjach należy rozważyć możliwość utworzenia własnego typ, który pochodzi od Exception i że throw.
Jak naprawić naruszenia
Aby usunąć naruszenie tej zasady, należy zmienić typ wyjątku thrown do określonego typu, który nie jest jednym z typów zastrzeżonych.
Kiedy do pomijania ostrzeżenia
Nie pomijaj ostrzeżenie od tej reguły.