Rob*_*ous 5 asp.net-mvc exception-handling asp.net-mvc-3 asp.net-mvc-4
我有一个包含三层的Web应用程序:Web>服务>核心。服务具有许多业务逻辑,可帮助Web构造和解释viewModel。有时,尽管Services层中可能存在问题,并且应该将用户推送到错误页面。
如何在MVC应用程序的服务层中实现错误处理?例如:
public void DeleteOrder(int orderId)
{
var order = _db.Order.FirstOrDefault(c => c.OrderId == orderId);
if (order == null)
{
// error handling
}
_db.Orders.Remove(order);
_db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
那isNull块会发生什么?
通常,您会将异常处理代码放入控制器中。用您的术语来说,我假设MVC控制器位于“ Web”层中,并且这些控制器调用“服务”层中的方法,例如您显示的“ DeleteOrder”方法。如果是这种情况,则在DeleteOrder的错误处理代码中,您只需抛出一个异常:
if (order == null)
{
throw new InvalidOperationException("Specified OrderId does not exist");
}
Run Code Online (Sandbox Code Playgroud)
这样,未处理的异常将传递到您的控制器,您的异常处理代码将驻留在该控制器中,您可以在其中记录该异常并将用户重定向到相应的错误页面。
至于如何在控制器中处理异常,您有多种选择:
第四种方法(创建自己的异常过滤器)可能是最可靠的方法。在这里,您可以添加异常日志记录,以及基于抛出的异常类型将用户重定向到适当的错误页面的代码。
您可以在此处找到有关MVC控制器异常处理的完整概述。
| 归档时间: |
|
| 查看次数: |
3689 次 |
| 最近记录: |