2013-05-08 21 views
9

Tôi biết tóm tắt và mô tả.InvalidOperationException vs. ArgumentException

Nhưng nếu ARGUMENT ở trạng thái INVALID thì sao?

Tôi nghĩ rằng ArgumentException là phù hợp hơn vì tài liệu InvalidOperationException nói rằng đối tượng chính nó trên những gì phương pháp được gọi là phải ở trạng thái không hợp lệ, phải không?

+0

Quá địa phương ... Người dùng thực tế không quan tâm đến điều đó ... Điều quan trọng là những gì bạn tạo ra từ đó và do đó, nó là hương vị tinh khiết ... –

Trả lời

11

Các tài liệu nói nó khá rõ ràng:

InvalidOperationException được sử dụng trong trường hợp khi sự thất bại để gọi một phương pháp là do nguyên nhân khác hơn đối số không hợp lệ.
...
Nếu lỗi gọi phương thức là do đối số không hợp lệ, thì ArgumentException hoặc một trong các lớp dẫn xuất của nó, ArgumentNullException hoặc ArgumentOutOfRangeException, nên được ném thay thế.

Phương pháp của bạn hy vọng các đối số ở trong một trạng thái nhất định, có thể bao gồm mọi thứ bao gồm trong trạng thái "hợp lệ" như được xác định bởi chính loại đối số.
Tôi nghĩ điểm khác biệt chính là nguồn gốc của sự cố:
Có phải là đối số hoặc đối tượng mà bạn gọi phương pháp không?

0

Có thể bạn đã bỏ lỡ thiếu ví dụ.

ArgumentException: Ví dụ sẽ là hàm kết thúc bằng ngoại lệ vì đối số không hợp lệ được chuyển cho hàm đó. Loại ngoại lệ này được xử lý đúng cách bằng cách sử dụng bất kỳ cơ chế bảo vệ nào là lý tưởng trong trường hợp cụ thể.

InvalidOperationException: Ví dụ sẽ sửa đổi bộ sưu tập trong khi điều tra viên có hiệu lực. Điều này gây ra ngoại lệ hoạt động không hợp lệ.

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