42

如何在 ASP.net Web Api 中引发异常?

下面是我的代码:

public Test GetTestId(string id)
{
    Test test = _test.GetTest(id);

    if (test == null)
    {
        throw new HttpResponseException(HttpStatusCode.NotFound);
    }

    return test;
}

我认为我做的不对,我的客户怎么知道这是一个HTTP 404错误?

4

2 回答 2

75

绝对没问题。

或者,如果您希望提供更多信息(如您所说,允许客户端与常规 404 区分开来):

    if (test == null)
    {
         throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, 
"this item does not exist"));
    }
于 2013-01-30T15:52:56.047 回答
6

这篇博文应该可以帮助您更好地理解 WebAPI 错误处理。

您的代码片段中的内容应该可以工作。如果测试为空且没有响应正文,服务器将向客户端发送 404 Not Found。如果您想要一个响应正文,您应该using Request.CreateErrorResponse按照上面博客文章中的说明进行考虑,并将该响应传递给HttpResponseException.

于 2013-01-30T15:51:37.463 回答