Ken*_*hou 12 .net asp.net-mvc exception-handling
在控制器中,尝试... catch可以捕获异常.如何捕获异常?例如,视图可能包含以下代码:
<%= Html.Encode(Model.MyID)%>
Run Code Online (Sandbox Code Playgroud)
如果Model为null,则在访问视图时将出现异常.在哪里捕获异常并将用户重定向到错误页面,并提供用户友好的错误消息?
此逻辑应在控制器而不是视图内处理。例如,如果您尝试查看 MyID 不存在的产品,则重定向到错误页面。
如果发生错误,您还可以重定向到 InvalidProduct 视图,该视图将提供更详细的错误描述/说明。
编辑:除了下面人们的评论以捕获未处理的异常之外,还可以在 ActionResult 方法声明或控制器(对于所有 ActionResults)上添加 [HandleError] 属性。
[HandleError]
public ProductsController
{
public ActionResult Show(int id)
{
Product p = //e.g. get product from db
if (p == null)
{
return RedirectToAction("Error");
//return RedirectToAction("InvalidProduct");
}
return View(p);
}
Run Code Online (Sandbox Code Playgroud)