2

我正在使用 ColdFusion 10 的新 REST API: http: //www.adobe.com/devnet/coldfusion/articles/restful-web-services.html

每当出现异常时,API 都会很好地处理它并自动返回如下内容:

HTTP/1.1 500 Internal Server Error
Content-Length: 52
Content-Type: application/json
Date: Fri, 22 Feb 2013 01:07:49 GMT

{"Message":"Element FOO is undefined in ARGUMENTS."}

问题是以下都没有被调用:

  • 站点范围的错误处理程序
  • Application.cfc 的 onError

似乎 REST API 处理了错误并且异常没有冒泡。每当发生服务器端错误时,我都喜欢给自己发送一封电子邮件(带有错误详细信息)。关于如何使用新的 REST API 有什么想法吗?

4

4 回答 4

1

这并不理想,但您可以在每个方法中添加一个 try/catch,以便在出错时向您发送电子邮件,然后重新抛出。

于 2013-02-22T18:04:18.433 回答
1

站点范围的错误处理程序适用于 REST 服务。在调用 REST 服务时,用户可以指定“接受”标头。如果用户将接受标头指定为 xml 或 json,则会捕获错误并将带有错误代码和消息的结构序列化为适当的格式。在这种情况下,不会调用站点范围的错误处理程序。以 JSON 或 XML 格式发送整个 HTML 内容并不好。但是,如果请求的 Content-Type 是 text/html,则会调用站点范围的处理程序并将 HTML 作为响应返回。

于 2013-06-04T16:39:04.863 回答
0

我不确定您使用什么来使用 Web 服务,但假设它是 ColdFusion,您可以使用 cfhttp 及其 throwonerror 属性:

<cftry>
    <cfhttp
        url="http://localhost:8500/rest/restapp/crudService/1"
        method="get"
        timeout="5"
        throwonerror="yes" />

    <cfcatch type="Any">
        <!--- email yourself the error details --->
    </cfcatch>
</cftry>

这样,您可以使用 cfcatch 捕获返回的 500 错误,然后通过电子邮件向您自己发送 cfcatch 转储(或者您喜欢通过电子邮件发送错误详细信息)。

于 2013-02-22T16:44:20.687 回答
0

这是固定的,但仅在 CF11中可用。

引用:

这已在最新的 ColdFusion11 版本中得到修复。

——哈里·克里希纳·卡莱

https://bugbase.adobe.com/index.cfm?event=bug&id=3506757

更新

CF10 的修补程序将在下一次更新时提供(目标为 2014 年 8 月中旬)

于 2014-06-10T21:05:49.623 回答