当前位置: 首页 > 知识库问答 >
问题:

WebAPI2,如何返回错误

澹台阳秋
2023-03-14
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个答案

唐永春
2023-03-14

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全局异常处理程序处理异常。这超出了你原来问题的范围。

徐淳
2023-03-14

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

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块中的所有内容都移到了全局错误处理程序中。

 类似资料:
  • 基类控制器里有error方法,用于api的错误消息返回输出 /** * 操作错误跳转的快捷方法 * @access protected * @param mixed $msg 提示信息,若要指定错误码,可以传数组,格式为['code'=>您的错误码,'msg'=>'您的错误消息'] * @param mixed $data 返回的数据 * @par

  • 问题内容: 我正在使用带有jQuery的ASP.NET MVC。我有以下MVC操作,返回成功页面的一部分。关于“应用程序错误”,我不确定要在客户端正确处理它的方式发送什么: 以下是我的jQuery ajax调用。请注意,我正在检查数据长度以确保没有错误。请建议我这样做的更好方法。 问题答案: 我会在您的ajax调用设置中添加一个错误函数。让服务器确定要显示的错误消息,然后将其传递给ajax错误处理

  • 我试图从输入的日期返回格式为"dd/MM/yyyy"的日期。如果输入的日期具有以下格式:"dd-mm-yyyy",我想返回一个错误:"输入的日期格式无效。"我分享我的代码: 我试图执行以下操作,但这是不正确的,因为我必须返回一个DateTime变量: 我希望你能帮助我!谢啦

  • 我是JS的学生。我有一段代码返回了一个错误。 这是返回的语法错误。你们能解释一下我做错了什么吗?

  • 问题内容: 当我将鼠标悬停在任何单词上时,总是显示一个黑框。如果PHP代码返回文本,它将显示在黑框中(应该显示)。但是,如果文本未返回,我希望它返回一个错误函数,以便以后可以更改黑盒的CSS,以使其宽度为而不是。 您可能已经发现,我遗漏了一些不重要的代码。希望有人能理解和帮助我!谢谢! 问题答案: 这正是您可以执行的操作: 在您的PHP文件中: 在您的jQuery AJAX端:

  • 我正在用这样的方法 我想在异常发生时返回一些文本消息,但是现在我只返回状态和空对象。有可能做吗?