2012-04-10 47 views
8

Gần đây tôi đã tham gia một dự án asp.net MVC theo cách mà không có nhiều nhất quán trong việc xử lý ngoại lệ trong bộ điều khiển; một số nhà phát triển trả lại dữ liệu cho khách hàng để cho người dùng biết điều gì sai, những người khác sẽ đưa họ trở lại để họ xử lý cấp máy chủ xử lý và ghi lại chúng - mà không cho phép người dùng biết điều gì.Ném ngoại lệ và thông báo cho người dùng

Có vẻ như rõ ràng với tôi rằng cả hai cách tiếp cận đều sai, và cần phải bổ sung cho nhau thay thế; những gì tôi đang mắc kẹt, là làm thế nào để làm điều đó. Tôi giả định xử lý ngoại lệ cuối cùng/logger có thể chuyển hướng người dùng đến một trang web lỗi khi bắt một cái gì đó đặc biệt khó chịu, nhưng điều đó hạn chế cơ chế chỉ là những thứ nghiêm trọng.

Tôi đang tìm cách để thực hiện cả hai "ném" và "trả lại ..." tại một thời điểm khi tôi bắt ngoại lệ, vì vậy tôi làm cho nó được sắp xếp và ghi lại phía máy chủ và nhận phía máy khách dữ liệu cho phép tôi nói cho người dùng biết đó là một trục trặc.

Chuyên môn của tôi với asp.net rất hạn chế, và trong khi tôi tin rằng tôi hiểu mvc đủ để nó không phải là một vấn đề, đây là loại "thực hành tốt nhất là gì?" câu hỏi từ một người làm việc với những người không bận tâm với các phương pháp hay nhất nhiều.

+0

Thực tế là bạn đang lo lắng về điều này một mình làm cho bạn một bổ sung tốt cho nhóm.Nhưng hãy chắc chắn rằng bạn làm cho đồng đội của bạn thấy tầm quan trọng của điều này quá, nếu không bạn sẽ là người duy nhất cố gắng để làm cho công cụ tốt hơn trong khi những người khác tiếp tục phá vỡ nó một lần nữa. – MarioDS

+0

Tôi đồng ý với Mario. Giải quyết mối quan tâm của bạn với nhóm của bạn là quan trọng. Nếu bạn cảm thấy rằng bạn có phương pháp tốt hơn để đối phó với ngoại lệ, sau đó chia sẻ nó với nhóm của bạn, vì nó sẽ tốt hơn sản phẩm trong thời gian dài. Có một cuộc thảo luận bình thường với họ cũng có thể tiết lộ quá trình suy nghĩ của họ và những điều mà bạn có thể đã bỏ qua. – Tung

Trả lời

2

Có một dự án tốt được gọi là Elmah cho lỗi đăng nhập và ngoại lệ trong các ứng dụng ASP.NET. Bạn có thể tìm thấy nó here

ELMAH (Lỗi Logging Modules và Handlers) là một lỗi cơ sở khai thác gỗ ứng dụng rộng đó là hoàn toàn pluggable. Có thể là được thêm động vào ứng dụng web ASP.NET đang hoạt động hoặc thậm chí tất cả các ứng dụng web ASP.NET trên máy tính mà không cần phải biên dịch lại hoặc triển khai lại .

Khi ELMAH đã bị rơi vào một ứng dụng web chạy và cấu hình một cách thích hợp, bạn sẽ có được cơ sở vật chất sau đây mà không thay đổi một dòng mã của bạn:

  • Đốn và cung cấp gần như tất cả trường hợp ngoại lệ unhandled.
  • Trang web từ xa xem toàn bộ nhật ký của các ngoại lệ được mã hóa lại.
  • Trang web để xem từ xa chi tiết đầy đủ của bất kỳ ngoại lệ nào đã đăng nhập, bao gồm cả ngăn xếp màu dấu vết.
  • Trong nhiều trường hợp, bạn có thể xem lại màn hình màu vàng ban đầu của cái chết mà ASP.NET đã tạo cho một ngoại lệ nhất định, ngay cả với chế độ chế độ tùy chỉnh bị tắt.
  • Thông báo e-mail về từng lỗi tại thời gian xảy ra lỗi.
  • Nguồn cấp dữ liệu RSS trong 15 lỗi cuối cùng từ nhật ký.
0

Việc áp dụng MVC mà tôi đang làm việc trên thực hiện các Application_Error trong Global.asax để xử lý ngoại lệ ném từ các ứng dụng và sau đó chuyển hướng người dùng đến một trang sai số chuẩn. Bộ điều khiển cho trang lỗi xử lý việc ghi nhật ký cũng như hiển thị đủ thông tin về lỗi để cho phép một người hỗ trợ tìm phiên của họ trong hệ thống và giúp giải quyết mọi vấn đề.

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