Sau khi xem qua hầu hết các câu trả lời ở đây, tôi muốn thêm một vài suy nghĩ.
Dựa vào Nhận xét của Tài liệu XML và mong đợi những người khác dựa vào là một lựa chọn sai lầm. Hầu hết mã C # mà tôi đã xem qua không ghi lại các phương pháp một cách hoàn chỉnh và nhất quán với Nhận xét của Tài liệu XML. Và sau đó, có một vấn đề lớn hơn là nếu không có các ngoại lệ được kiểm tra trong C #, làm thế nào bạn có thể ghi lại tất cả các ngoại lệ mà phương pháp của bạn ném ra nhằm mục đích cho người dùng API của bạn biết cách xử lý tất cả chúng một cách riêng lẻ? Hãy nhớ rằng, bạn chỉ biết về những thứ mà bạn tự ném vào với từ khóa ném trong quá trình triển khai của mình. Các API bạn đang sử dụng bên trong triển khai phương pháp của mình cũng có thể đưa ra các ngoại lệ mà bạn không biết vì chúng có thể không được ghi lại và bạn không xử lý chúng trong quá trình triển khai của mình, vì vậy chúng sẽ nổ tung khi đối mặt với người gọi của bạn phương pháp. Nói cách khác,
Andreas đã liên kết một cuộc phỏng vấn với Anders Hejlsberg trong các câu trả lời ở đây về lý do tại sao nhóm thiết kế C # quyết định chống lại các ngoại lệ đã được kiểm tra. Câu trả lời cuối cùng cho câu hỏi ban đầu được ẩn trong cuộc phỏng vấn đó:
Các lập trình viên bảo vệ mã của họ bằng cách viết try cuối cùng ở khắp mọi nơi, vì vậy họ sẽ phản hồi chính xác nếu một ngoại lệ xảy ra, nhưng họ thực sự không quan tâm đến việc xử lý các ngoại lệ.
Nói cách khác, không ai nên quan tâm đến loại ngoại lệ nào có thể xảy ra đối với một API cụ thể vì bạn luôn bắt gặp tất cả chúng ở mọi nơi. Và nếu bạn muốn thực sự quan tâm đến các ngoại lệ cụ thể, cách xử lý chúng là tùy thuộc vào bạn chứ không phải ai đó xác định chữ ký phương thức bằng một thứ gì đó như từ khóa ném Java, buộc xử lý ngoại lệ cụ thể đối với người dùng API.
-
Riêng tôi, tôi bị xé rách ở đây. Tôi đồng ý với Anders rằng việc kiểm tra các ngoại lệ không giải quyết được vấn đề nếu không thêm các vấn đề mới, khác. Cũng giống như các nhận xét tài liệu XML, tôi hiếm khi thấy mã C # với mọi thứ được gói trong các khối try cuối cùng. Tôi cảm thấy rằng đây thực sự là lựa chọn duy nhất của bạn và một điều gì đó có vẻ như là một cách thực hành tốt.