Tôi giả sử bạn đang sử dụng WCF, vì câu hỏi của bạn được gắn thẻ với nó. Một thực hành tốt trong xử lý ngoại lệ với WFC không cho phép ngoại lệ bong bóng trên dây cho người tiêu dùng của bạn, nhưng thay vào đó, hãy ném các FaultExceptions có ý nghĩa.
Bạn nên luôn luôn có một thử ... bắt khối trong hoạt động của bạn nếu có bất kỳ cơ hội một ngoại lệ có thể được tạo ra bởi nó. Nếu bạn cho phép trích xuất thô, chỉ có hai kịch bản có thể xảy ra: Nếu bạn đã định cấu hình dịch vụ của mình để cho phép chi tiết ngoại lệ trong lỗi, bạn sẽ để lộ các dịch vụ nội bộ của bạn tự mở vì vi phạm an ninh. Hoặc bạn không có cấu hình này trong dịch vụ của mình và người tiêu dùng nhận được thông báo rất chung chung cho biết có điều gì đó không ổn, điều này không hữu ích cho họ hoặc nhóm hỗ trợ.
Những gì bạn cần làm là khai báo một hoặc nhiều FaultExceptions, tùy thuộc vào thư bạn muốn người dùng nhận được từ hoạt động của bạn, trang trí chúng dưới dạng FaultContracts trên khai báo hoạt động của bạn. Sau đó, bạn có thể thử ... bắt ngoại lệ cụ thể và ném các lỗi cụ thể. Bạn cũng có thể có một thử ... bắt mà bắt ngoại lệ và ném một lỗi rất chung chung.
Chìa khóa ở đây, không tiết lộ quá nhiều thông tin về những gì đang xảy ra với hoạt động của bạn trong nội bộ - đặc biệt là dấu vết ngăn xếp!
Lỗi này chỉ là một hợp đồng dữ liệu khác, vì vậy nó được khai báo trong WSDL của bạn. Điều này có nghĩa rằng người tiêu dùng của bạn có thể bắt lỗi cụ thể và có thể phản ứng với các lỗi được ném từ hoạt động của bạn như thể nó là một ngoại lệ được ném ra khỏi mã của họ.
Hy vọng điều này sẽ hữu ích.
Joe.
Nguồn
2008-12-15 13:36:46