忽略 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();
}
我有一个简单的控制器,可以处理 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();
}