首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理未处理的HttpException

处理未处理的HttpException
EN

Stack Overflow用户
提问于 2012-02-13 17:34:22
回答 2查看 1.6K关注 0票数 0

我有一个类似下面这样的控制器操作:

代码语言:javascript
复制
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得到一个提示,通知我用户代码未处理该异常。

我想我只是想要有人澄清我正在做的事情是正确的,并且这份通知可以不用担心地被驳回。在我实际处理HttpException的Global.asax文件中,事件仍然会冒泡到Application_Error方法,所以据我所知,唯一的问题是VS在每次抛出这个异常时都会告诉我,这很不方便。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-13 17:36:35

我想我只是想要有人澄清我所做的事情是正确的,并且这份通知可以不用担心地被驳回。

是的,您看到的就是所谓的first chance exception。VS调试器会通知您代码中发生的所有异常。如果你有一个适当的处理程序来处理这个异常,你应该就没问题了。

票数 1
EN

Stack Overflow用户

发布于 2012-02-13 17:37:51

我假设您希望将http代码(在本例中为404 )返回给页面的用户/消费者。所以你应该这样做:

代码语言:javascript
复制
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也更优雅。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9258234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档