web-dev-qa-db-ja.com

Web APIで例外をスローする方法は?

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エラー?

34
Alvin

それは絶対に大丈夫です。

または、さらに情報を提供したい場合(あなたが言うように、クライアントが通常の404と区別できるようにするため):

    if (test == null)
    {
         throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, 
"this item does not exist"));
    }
65
Filip W

これにより、WebAPIエラー処理の理解が少し向上します。

http://blogs.msdn.com/b/youssefm/archive/2012/06/28/error-handling-in-asp-net-webapi.aspx

コードスニペットにあるものが機能するはずです。 testがnullで応答本文がない場合、サーバーは404 Not Foundをクライアントに送り返します。応答本文が必要な場合は、上記のブログ投稿で説明されているようにRequest.CreateErrorResponseを使用し、その応答をHttpResponseExceptionに渡すことを検討する必要があります。

5