我在某处读到,不建议在Web API方法中使用TRY CATCH。
我正在对方法进行以下调用,如果一切顺利,我想返回状态为200的Employee对象,但是如果出现问题,例如数据库调用失败,等等。我想返回状态500。正确的方法是什么处理该代码?
[HttpPost]
public async Task<IHttpActionResult> PostNewEmployeeAsync(Employee emp)
{
var newEmployee = await RegisterEmployee(emp);
return Ok(emp);
// What if I had a database error in RegisterEmployee method. How do I detect the error and send InternalServerError()
}
private async Task<Employee> RegisterEmployee(Employee emp)
{
// Call DB to register new employee, then return Employee object
}
您的代码应返回与您的情况匹配的错误代码,例如,如果您的代码在数据库中找不到所需的资源,则返回NotFound,
但是,如果代码引发异常,请避免使用try / catch块包装代码,而应将异常冒泡至可以全局处理的级别,为此,您可以使用许多选项,例如:
1-实现一个ExceptionFilter,您可以在其中处理控制器中引发的所有未处理的异常(这不包括在管道中的控制器之前发生的任何异常)。
请参阅此有关ExceptionFilterAttribute更多细节。
2-如果使用的是Web API 2,则可以实现IExceptionHandler接口,在该接口中可以处理管道中任何地方发生的所有异常,并可以在其中返回所需的错误。
请参见本有关网络API 2全球异常处理的更多细节。
希望能有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句