ASP.NETMVC 4,抛出HttpException与返回HttpStatusCodeResult哪个更好?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (39)

我正在开发一个RESTful服务,我想为所有不支持的URL返回400。

我的问题是我应该在何时选择方法1而不是方法2,反之亦然。

//method 1
public ActionResult Index()
{
    //The url is unsupported
    throw new HttpException(400, "Bad Request");
}

这一个似乎更好?

//method 2
public ActionResult Index()
{
    //The url is unsupported
    return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Bad Request");
}
提问于
用户回答回答于

第二个似乎更好,因为它不涉及异常抛出,与第一个例子相比,这是一个微小的成本。

用户回答回答于

在我看来,如果对不支持的URL进行请求,需要首先考虑。那么你认为这是一种特殊的情况,或者你期望这种情况发生?如果你认为它是一种特殊情况,那么创建并抛出一个异常(选项1)。如果预计会收到不受支持的URL的许多请求,请将其视为应用程序的功能并使用方法2。

这就是说,如果对不受支持的URL有太多要求,将需要再次考虑客户。一般来说,我宁愿抛出一个异常,因为我不希望在不受支持的URL上收到太多的请求,如果发生这种情况,那么我想将它记录为例外并调查原因。

扫码关注云+社区