【问题标题】:Global exception/error handling in asp.net mvc core and dapperasp.net mvc core 和 dapper 中的全局异常/错误处理
【发布时间】:2017-01-07 05:46:27
【问题描述】:

我在我们的 App 中使用 Asp.net core 和 Dapper。这是我的 User Repository Add 方法。(连接字符串将通过依赖注入)

public User Add(User user)
        {
            string query = @"Insert into Users(UserName,Email,LastName,Password) values (@UserName , @Email, @LastName , @Password );
            select Cast(Scope_Identity() as int)";

            Try
            {
             using (var db = connectionFactory.GetOpenConnection())
             {
                  int id = db.Query<int>(query, user).Single();
                  user.UserId = id;
                  return user;
             }

        } Catch(Exception e){  //log exception}

        }

在我的启动类中,我包含了全局异常处理程序

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
             loggerFactory.AddDebug();

            if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                // StatusCode pages to gracefully handle status codes 400-599.
                app.UseStatusCodePagesWithRedirects("~/Home/StatusCodePage");

                app.UseExceptionHandler("/Home/Error");
            }

        }

我的问题是是否在存储库的每个方法中都需要 try catch?还是asp.net core会自动处理全局异常/Sql excption?

请告诉我正确的方法,因为我不想在每个方法中都包含 try catch

【问题讨论】:

  • 您所指的术语是横切关注。阅读与全局错误处理相关的主题。理想情况下,您希望保持实施精益并具有单一职责 (SRP)。

标签: c# asp.net-mvc asp.net-core dapper


【解决方案1】:

try catch 是确保安全的最佳方法,但在理想情况下,最佳实践是围绕这些情况编写单元测试。我在工作的最后一个独立项目中遇到了这个问题。编写良好的单元测试将告诉您代码的确切问题。我爱他们。 :)

【讨论】:

  • 感谢您的快速回复。你能用一个例子详细说明吗?这将非常容易理解。
  • 这是一个很大的话题,首先我必须问,你以前创建过单元测试吗?
  • @MistaGoustan 我是 asp.net 核心的新手..我之前没有做过单元测试..如果你提供示例代码...它将帮助我们
  • 好吧,如果你从来没有这样做过,这是一个相当广泛的主题,但绝对值得一看。您的代码将变得更加稳定和可靠。您还想了解 TDD(测试驱动开发),因为它们非常好地结合在一起。但是在这个主题上,你将诚实地学习的最好方法不是阅读那么多,而只是去做。单元测试:msdn.microsoft.com/en-us/library/hh694602.aspxTDD:msdn.microsoft.com/en-us/library/hh212233.aspx
猜你喜欢
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2018-09-11
  • 2019-03-01
  • 2012-03-16
  • 1970-01-01
  • 2021-10-14
  • 2016-02-12
相关资源
最近更新 更多