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