Tôi quyết định viết lại câu trả lời của mình để cụ thể cho câu hỏi thực tế của bạn và theo nghĩa rộng hơn, ứng dụng MVC không phải là điều duy nhất áp dụng tốt nhất.
(1) Trả lời. Đây không phải là thực hành tốt. Bạn nên sử dụng một phương thức trình tạo ngoại lệ thay vì ném trực tiếp HttpException.
public static void ThrowPageNotFoundException() {
throw new HttpException((Int32)HttpStatusCode.NotFound, "HTTP/1.1 404 Not Found");
}
(2) DO. Sử dụng các phương thức trình tạo ngoại lệ (ví dụ: mã tôi đã cung cấp). Điều này cho phép bạn tránh chi phí hiệu suất bổ sung của việc có loại ngoại lệ của riêng bạn và cho phép nó được inlined. Các thành viên ném ngoại lệ không được inlined. Đây sẽ là sự thay thế thích hợp cho việc ném thuận tiện.
(3) DO.Sử dụng ngoại lệ của thư viện lớp cơ sở bất cứ khi nào có thể và chỉ tạo ngoại lệ tùy chỉnh khi hoàn toàn không có ngoại lệ cơ sở đáp ứng các yêu cầu cần thiết. Tạo các ngoại lệ tùy chỉnh bổ sung thêm hệ thống phân cấp ngoại lệ sâu hơn, điều này làm cho việc gỡ rối khó khăn hơn khi nó không cần, bổ sung thêm chi phí hiệu năng, và cũng bổ sung thêm bloat cho cơ sở mã của bạn.
(4) KHÔNG. Ném lớp cơ sở System.Exception. Thay vào đó, hãy sử dụng loại ngoại lệ cụ thể.
(5) KHÔNG. Tạo ngoại lệ tùy chỉnh để thuận tiện. Đây không phải là một lý do chính đáng cho một ngoại lệ tùy chỉnh, bởi vì các ngoại lệ về bản chất là tốn kém.
(6) KHÔNG. Tạo ngoại lệ tùy chỉnh chỉ để có loại ngoại lệ của riêng bạn.
(7) KHÔNG. Ném ngoại lệ có thể tránh được bằng cách thay đổi mã gọi. Điều này sẽ gợi ý rằng bạn có một lỗi khả năng sử dụng trong API thay vì một vấn đề thực tế.
Bất kỳ ai đã đọc Nguyên tắc thiết kế khung từ chuỗi phát triển .NET sẽ biết những thực tiễn này và thực hành rất tốt. Đây là những thực tế mà khung công tác .NET được xây dựng và MVC.
Nguồn
2012-04-19 05:01:59
Đó là trang web MVC. Khi yêu cầu một thực thể có ID không tồn tại, tôi sẽ gửi một lỗi 404. Điều gì là sai với điều đó? Chính StackOverflow sử dụng phương thức này. Hãy thử truy cập http://stackoverflow.com/questions/1022181121312312331 – Marko
Ngoại lệ là bất cứ điều gì nhưng nhanh chóng. Ném một ngoại lệ xảy ra ở các trạng thái ngoại lệ - một phương thức nội tuyến là vô nghĩa trong trường hợp này. – zmbq
Sai. Một trong những sai lầm phổ biến nhất là các nhà phát triển thường nghĩ ngoại lệ là điều kiện đặc biệt. Hiệu suất và tối ưu hóa với ngoại lệ. –