2013-02-12 38 views
7

FxCop phát hành vi phạm quy tắc CA2201 nếu bạn ném System.IndexOutOfRangeException vào mã của mình (see reference). Lý do cho điều này là System.IndexOutOfRangeException là "dành riêng và nên được ném chỉ bởi thời gian chạy ngôn ngữ chung" theo tài liệu.Điều gì có thể xảy ra khi ném một ngoại lệ dành riêng trong C#?

Nhưng điều gì thực sự có thể xảy ra nếu bạn ném System.IndexOutOfRangeException?

+7

Tại sao bạn lại cần tự mình ném nó? – Oded

+0

@Oded Khi bạn triển khai cấu trúc dữ liệu cấp thấp. – Romoku

+4

@Romoku - Ngay cả khi đó. Với hầu hết các loại, bạn sẽ có cơ sở lưu trữ trong một loại hiện có mà đã ném này. – Oded

Trả lời

4

Không có gì.

Từ quan điểm kỹ thuật, tốt nhất là bạn nên loại trừ ngoại lệ này. Không có gì sẽ phá vỡ nếu bạn làm.

Nhưng hãy nhớ rằng bạn chỉ nên ném System.IndexOutOfRangeException nếu bạn đã gặp phải System.IndexOutOfRangeException vì địa điểm này sẽ không phù hợp vì nó được xác định rõ ràng loại ngoại lệ này sẽ được sử dụng. MSDN states for theSystem.IndexOutOfRangeException:

Trường hợp ngoại lệ được thực hiện khi truy cập vào phần tử của một mảng nằm ngoài giới hạn của mảng. Lớp này không thể được thừa kế.

Các vấn đề liên quan