在哪里记录例外?

时间:2015-06-12 06:59:37

标签: c# asp.net-mvc design-patterns n-tier-architecture

我有一个多层Web应用程序,图层如下所示。

  1. MyApp.Models
  2. MyApp.Views
  3. MyApp.Controllers
  4. MyApp.Services
  5. MyApp.Repository.EF
  6. 在这个架构中,我有一个分离的控制器类项目,你可能会猜到。 让我们想象一下,我想在这个应用程序中向db中添加一个类别。

    对于此交易,我遵循以下这些项目步骤,

    控制器>服务>存储库> DB

    对于此交易,我按照以下项目中的这些方法步骤进行操作

    CreateAction> CreateCategory> InsertEntity> CategoryTable

    在层中的所有这些方法中,我使用try-catch块来记录任何异常。 我不知道它是否正确?我真的很无聊写try-catch块来记录每个后续步骤中的东西 每层都可能出错。

    登录像我这样的多层应用程序的最佳做法是什么?

2 个答案:

答案 0 :(得分:3)

通常你会添加一个全局异常处理程序,在其中记录异常并将其转换为合适的格式以发送给用户(错误页面,WCF错误,HTTP错误等,取决于你正在使用的技术。

这意味着您不需要在服务,业务或其他层面进行任何尝试/捕获;除非你有一些特定的逻辑要执行。相反,您不必担心一直捕获异常,因为它们由全局异常处理程序处理,因此它的内部细节不会公开,而是自动记录。

有关如何在ASP.NET MVC中执行此操作的示例:请查看here

答案 1 :(得分:2)

作为Java开发人员,我会创建一些新类型的异常(Runtime,Checked等),其构造函数接受其他异常实例作为参数和/或其他(业务或技术)参数。在这个构造函数中,我可以记录我想要的内容。通过这种方式,我将避免所有这些尝试捕获块进行日志记录。