2013-02-12 11 views
7

FxCop narusza zasadę CA2201, jeśli rzucisz w swoim kodzie System.IndexOutOfRangeException (see reference). Uzasadnieniem tego jest to, że System.IndexOutOfRangeException jest "zarezerwowane i powinno być wyrzucane tylko przez środowisko uruchomieniowe wspólnego języka" zgodnie z dokumentacją.Co może pójść nie tak podczas rzucania zastrzeżonego wyjątku w języku C#?

Co jednak może się nie udać, jeśli rzucisz System.IndexOutOfRangeException?

+7

Dlaczego miałbyś kiedyś rzucić nim sam? – Oded

+0

@Oded Kiedy wdrażasz niskonakładowe struktury danych. – Romoku

+4

@Romoku - Nawet wtedy. W większości typów masz pamięć bazową w istniejącym typie, który już to rzuci. – Oded

Odpowiedz

4

Nic.

Z technicznego punktu widzenia nie ma problemu z wyrzuceniem tego wyjątku. Nic nie pęknie, jeśli to zrobisz.

Pamiętaj jednak, że powinieneś rzucić System.IndexOutOfRangeException tylko wtedy, gdy pierwszy raz natknąłeś się na System.IndexOutOfRangeException, ponieważ w przeciwnym razie ten wyjątek nie byłby odpowiedni, ponieważ bardzo wyraźnie określono, do czego ten typ wyjątku ma zostać użyty. MSDN states for theSystem.IndexOutOfRangeException:

wyjątkiem tego, że jest generowany, gdy próbuje się uzyskać dostęp do elementu tablicy z indeksem, który znajduje się poza granicami w tablicy. Ta klasa nie może zostać odziedziczona.

Powiązane problemy