提问者:小点点

WebAPI2,如何返回错误


public IHttpActionResult Save(item)
{
    try
    {
        result = MyRepository.Save(item);
        return Ok(result);
    }
    catch
    {
        // What should I do here?
        // I wish to return an error response how can i do that? 
    }
}

null

但如果有例外,我该怎么办?

null


共2个答案

匿名用户

创建一个模型来保存您想要返回并传递的错误信息。

public IHttpActionResult Save(item) {
    try {
        result = MyRepository.Save(item);
        return Ok(result);
    } catch {
        // What should I do here? Create a model to hold the data you want to return
        var myErrorModel = new {
            code = "My custom error code or 500 server error code",
            message = "some friendly error message"
        };

        // I wish to return an error response how can i do that?
        var response = Request.CreateResponse(HttpStatusCode.InternalServerError, myErrorModel);
        return ResponseMessage(response);
    }
}

在javascript客户机中,在错误处理程序中,您可以访问模型属性并根据需要处理错误。

var handleResponse = function (data) {
    var code = data.code;
    var message = data.message
};

更新:

同意@win的观点,我个人不喜欢在控制器操作中这样做,因为这是一个跨领域的关注点,并且基本上把catch块中的所有内容都移到了全局错误处理程序中。

匿名用户

null

public IHttpActionResult Save(item)
{
    try
    {
        result = MyRepository.Save(item);
        return Ok(result);
    }
    catch
    {
        return BadRequest("Error message");
    }
}

FYI:不要使用try catch块仅仅是为了吞噬一个异常。我个人不喜欢使用try catch块内动作方法。相反,我让Web API 2全局异常处理程序处理异常。这超出了你原来问题的范围。