gpt4 book ai didi

asp.net - 2. 如何处理 WebAPI 方法中的异常?

转载 作者:行者123 更新时间:2023-12-02 13:42:59 27 4
gpt4 key购买 nike

在我的 WebAPI 2.1 应用程序中,我正在处理这样的插入:

    [Route("Post")]
public async Task<IHttpActionResult> Post([FromBody]City city)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
try
{
db.Exams.Add(city);
await db.SaveChangesAsync(User, DateTime.UtcNow);
}
catch (Exception ex)
{
var e = ex;
return BadRequest("Error: City not created");
}
return Ok(city);
}

我使用类似的东西来更新和删除。我想我应该做一些更有意义的事情异常(exception),但我不知道从哪里开始处理这些异常(exception)。我查看了 elmah,但它说它处理未处理的异常。这是否意味着我不应该捕获这样的异常?

有人可以给我一些吗关于我所拥有的是否可以以及我是否应该记录异常以及如何记录的指针?

最佳答案

您所做的并不是“坏”,它只是有点冗长,并且如果您的代码中有很多 try/catch block ,则无法很好地扩展。当引发异常时,您决定该怎么做,如果确实是一个错误的请求,那么返回一个错误的请求响应就可以了。有很多东西可以退回,具体取决于出现的问题。但是,您必须处理当代码中抛出异常时该怎么办,因此维护这种分散在代码中的逻辑很快就会成为一个问题。

最好利用asp.net web api的异常处理框架。例如,看看这些文章:

这个想法是将您的逻辑集中在全局异常处理程序中,并将其用作代码中您必须担心此问题的唯一位置。代码的其余部分将引发异常,并且所有内容都将通过异常处理程序/过滤器/等进行,具体取决于您的决定。

例如,我创建了自己的异常类型(例如 CustomExceptionA、CustomExceptionB 等),当我抛出某种类型的异常时,我确切地知道如何在一个地方处理它并执行特定的逻辑。如果我想改变处理特定异常类型的方式,那么我只需更改一个地方,其余代码将不受影响。

上面的第二篇文章链接还包括一个全局异常记录器来记录此类异常。

关于asp.net - 2. 如何处理 WebAPI 方法中的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24350081/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com