我有一个像这样的控制器动作:
public ActionResult Index(string url)
{
var pageTitle = url.Split('/')[0];
var page = Services.PageService.GetPage(pageTitle);
if (page == null)
{
throw new HttpException((Int32) HttpStatusCode.NotFound, "NotFound");
}
return View(page);
}
每次我调试我的网站时,当抛出HttpException时,我从Visual Studio得到一个提示,通知我该用户代码未处理该异常。
我想我只是想让某人澄清我正在做的事情是正确的,而且这个通知可以毫无顾虑地被驳回。事件仍然冒泡到我的Global.asax文件中的Application_Error方法,我实际上正在处理HttpException,所以据我所知,唯一的问题是每次抛出此异常时VS告诉我的不便。
答案 0 :(得分:1)
我想我只是想让某人澄清我正在做的事情 这是正确的,并且可以毫无顾虑地解除此通知。
是的,你所看到的被称为first chance exception。 VS调试器会通知您代码中发生的所有异常。如果你有一个适当的处理程序来处理这个异常,你应该没问题。
答案 1 :(得分:-1)
我假设您要将http代码(在本例中为404)返回给您网页的用户/使用者。所以你应该这样做:
public ActionResult Index(string url)
{
var pageTitle = url.Split('/')[0];
var page = Services.PageService.GetPage(pageTitle);
if (page == null)
{
return new HttpNotFoundResult();
}
return View(page);
}
HttpNotFoundResult是asp.net-mvc3中的一个新ActionResult,还有一个受保护的方法HttpNotFound()
作为控制器类的一部分,它执行相同的操作。在这两种情况下,您还可以提供消息字符串。
在unit-testing方面,我认为返回一个ActionResult更优雅。