C# asp.net mvc核心和dapper中的全局异常/错误处理

C# asp.net mvc核心和dapper中的全局异常/错误处理,c#,asp.net-mvc,asp.net-core,dapper,C#,Asp.net Mvc,Asp.net Core,Dapper,我在应用程序中使用Asp.net core和Dapper。这是我的用户存储库添加方法。(连接字符串将通过依赖项注入) 我的问题是在存储库的每个方法中是否重新查询try-catch?或者asp.net core将自动处理全局异常/Sql exoption 请让我知道正确的方法,因为我不想在每个方法中都包含try-catchtry-catch是确保安全的最佳方法,但在完美世界中,最佳实践是围绕这些情况编写单元测试。我在工作中的最后一个独立项目中遇到了这个问题。编写良好的单元测试将告诉您代码的确切问题

我在应用程序中使用Asp.net core和Dapper。这是我的用户存储库添加方法。(连接字符串将通过依赖项注入)

我的问题是在存储库的每个方法中是否重新查询try-catch?或者asp.net core将自动处理全局异常/Sql exoption


请让我知道正确的方法,因为我不想在每个方法中都包含try-catch

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

您所指的术语是交叉关注。阅读有关全局错误处理的主题。理想情况下,您希望保持实现的精简和单一责任(SRP)。感谢您的快速响应。你能举例说明吗?这很容易理解。这是一个很大的主题,首先我必须问,你以前创建过单元测试吗?@MistaGoustan我是asp.net core的新手。我以前没有做过单元测试。如果你提供示例代码…这将对我们有帮助好吧,如果你从未做过,这是一个相当广泛的主题,但绝对值得一看。您的代码将变得更加稳定和可靠。您还想了解TDD(测试驱动开发),因为它们配合得非常好。但在这个问题上,诚实学习的最好方法不是读那么多书,而只是去做。单元测试:TDD:
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");
            }

        }