忽略 API 控制器中的异常,以便控制器仍然处理请求

Ignore an exception in an API controller so that the controller still processes the request

我有一个简单的控制器,可以处理 POST 请求,然后发送电子邮件。

我想忽略由处理发送电子邮件的函数引起的任何异常,以便我仍然可以处理订单。

我尝试放入一个空的 catch 块,但它仍然会停止一切,如果发送电子邮件出现问题,它会向客户端抛出 500 错误。

以下是我尝试过但没有用的方法:

[HttpPost]
public async Task<ActionResult> ProcessOrder([FromBody] CreateNewOrder order)
{
    '  *** do stuff with order and process

    try
    {
        SendThankYouEmail(product.Name);
    } catch  { }


    return Ok();


}

有没有办法在 SendThankYouEmail 函数失败的情况下发送 OK?

谢谢!

尽管这是一个糟糕的设计,永远不应遵循,但您可以采用以下解决方法:

[HttpPost]
public async Task<ActionResult> ProcessOrder([FromBody] CreateNewOrder order)
{
    '  *** do stuff with order and process

    try
    {      
       SendThankYouEmail(product.Name);
    } catch (Exception ex) {
       // Swallow the exception by logging it somewhere.
       return Ok();
    }    

    return Ok();        
}