3

例外がキャッチされたときに HttpStatus コードを取得できる方法はありますか? 例外はBad Request、、、? 例外ブロックでこれを処理する方法は?408 Request Timeout419 Authentication Timeout

 catch (Exception exception)
            {
                techDisciplines = new TechDisciplines { Status = "Error", Error = exception.Message };
                return this.Request.CreateResponse<TechDisciplines>(
                HttpStatusCode.BadRequest, techDisciplines);
            }
4

2 に答える 2

2

WebAPI コントローラーでエラー処理を行っているときに、同じトラップに陥りました。私は例外処理のベストプラクティスについていくつかの調査を行い、最終的には魅力的に機能する次のものに行き着きました(それが役立つことを願っています:)

try
{       
    // if (something bad happens in my code)
    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent("custom error message here") });
}
catch (HttpResponseException)
{
    // just rethrows exception to API caller
    throw;
}
catch (Exception x)
{
    // casts and formats general exceptions HttpResponseException so that it behaves like true Http error response with general status code 500 InternalServerError
    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(x.Message) });
}
于 2014-02-14T18:24:03.470 に答える