CA2201: Nie wywołuj zastrzeżonych typów wyjątków
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA2201 |
Tytuł | Nie zgłaszaj wyjątków o zastrzeżonych typach |
Kategoria | Użycie |
Poprawka powodująca niezgodność lub niezgodność | Kluczowa |
Domyślnie włączone na platformie .NET 9 | Nie. |
Przyczyna
Metoda zgłasza typ wyjątku, który jest zbyt ogólny lub zarezerwowany przez środowisko uruchomieniowe.
Opis reguły
Następujące typy wyjątków są zbyt ogólne, aby dostarczyć użytkownikowi wystarczające informacje:
Następujące typy wyjątków są zarezerwowane i powinny być zgłaszane tylko przez środowisko uruchomieniowe języka wspólnego:
- System.AccessViolationException
- System.ExecutionEngineException
- System.IndexOutOfRangeException
- System.NullReferenceException
- System.OutOfMemoryException
- System.Runtime.InteropServices.COMException
- System.Runtime.InteropServices.ExternalException
- System.Runtime.InteropServices.SEHException
- System.StackOverflowException
Nie zgłaszaj ogólnych wyjątków
Jeśli zgłosisz ogólny typ wyjątku, taki jak Exception lub SystemException, w bibliotece lub strukturze, wymusza na użytkownikach przechwycenie wszystkich wyjątków, w tym nieznanych wyjątków, które nie wiedzą, jak obsługiwać.
Zamiast tego należy zgłosić bardziej pochodny typ, który już istnieje w strukturze, lub utworzyć własny typ pochodzący z klasy Exception.
Zgłaszanie określonych wyjątków
W poniższej tabeli przedstawiono wyjątek zgłaszany dla różnych typów nieprawidłowych argumentów, w tym parametr wartości w set
metodzie dostępu do właściwości.
Nieprawidłowy argument | Wyjątek |
---|---|
null odniesienie |
ArgumentNullException |
Poza dozwolonym zakresem wartości (np. indeksem kolekcji lub listy) | ArgumentOutOfRangeException |
Nieprawidłowa enum wartość |
InvalidEnumArgumentException |
Zawiera format, który nie spełnia specyfikacji parametrów metody (na przykład ciąg formatu dla ToString(String) elementu ) |
FormatException |
W przeciwnym razie jest to nieprawidłowe | ArgumentException |
W poniższej tabeli przedstawiono wyjątek zgłaszany dla różnych typów nieprawidłowych operacji.
Nieprawidłowa operacja | Wyjątek |
---|---|
Operacja jest nieprawidłowa dla bieżącego stanu obiektu. | InvalidOperationException |
Operacja jest wykonywana na obiekcie, który został usunięty. | ObjectDisposedException |
Operacja nie jest obsługiwana (na przykład w przesłoniętym Stream.Write strumieniu otwartym do odczytu). |
NotSupportedException |
Konwersja spowoduje przepełnienie (na przykład w jawnym przeciążeniu operatora rzutowania). | OverflowException |
W przypadku wszystkich innych sytuacji należy rozważyć utworzenie własnego typu, który pochodzi z Exception i zgłosić go.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, zmień typ zgłaszanego wyjątku na określony typ, który nie jest jednym z typów zarezerwowanych.
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżeń dla tej reguły.