Tôi có dịch vụ WCF ghi nhật ký bất kỳ ngoại lệ nào và sau đó ném chúng dưới dạng FaultExceptions.Thiết kế mẫu/C# lừa cho bit lặp lại mã
Tôi đang thực hiện rất nhiều sự lặp lại, ví dụ: trong mỗi phương thức dịch vụ.
try {
// do some work
}
catch(Exception ex)
{
Logger.log(ex);
// actually will be Fault Exception but you get the idea.
throw ex;
}
Tôi đang tìm cách thanh lịch hơn để thực hiện việc này khi tôi cắt và dán thử/nắm bắt trong mỗi dịch vụ.
Có mẫu thiết kế/thủ thuật C# nào có thể được sử dụng để làm cho điều này thanh lịch hơn không?
Lưu ý rằng "ném ex;" mất ngăn xếp cuộc gọi ban đầu, trong khi "ném"; không làm. – Polyfun
Cơ thể của thử cũng có bắt được không? – christopher
Bạn đang xem xét Aspect định hướng lập trình ở đây - http://msdn.microsoft.com/en-us/library/aa288717%28v=vs.71%29.aspx. Nhiều giải pháp của bên thứ ba như PostSharp có các khía cạnh Xử lý ngoại lệ thực hiện chính xác điều này. Một giải pháp khác (tồi tệ hơn) là bắt tất cả các ngoại lệ ở cấp ứng dụng (ví dụ như AppDomain_UnhandledException) thay vì có các khối catch thử cục bộ. Tôi nói tồi tệ hơn vì nó có hiệu quả trong việc xử lý ngoại lệ, hoặc vứt bỏ mã của bạn bằng try/catch (throw) – dash