我正在开发一个API包装类,这是我做的第一个。 大部分它并没有太困难。 到达需要处理由API返回的错误的可能性,但是我应该如何处理这些错误。什么时候应该抛出异常而不是在PHP中返回错误?
外部文件将调用API类,即findVenueByLocationID($locationID);
该函数将构造API调用的URL和方法(POST,GET,DELETE等)并将其传递给一个名为makeCall的函数。
MakeCall构造完成的URL,将请求发送到服务并返回生成的XML。如果API返回一个错误,它就在它返回的XML中。该URL使用函数file_get_contents()来调用。该API具有一定数量的错误代码,它将在XML中返回。
据我了解,我应该做的功能MakeCall函数中执行以下操作:
- 返回XML之前,先检查,看看它是否包含一个错误代码,如果是的话,传递一个错误处理类来处理错误。 (日志和返回客户端版本错误信息)
- 添加一个围绕file_get_contents()函数的try catch来捕获任何连接错误,即无法访问服务器?
这被认为是最好的办法吗? 我应该在makeCall的调用中添加try catch,而不是在file_get_contents中添加try_all? 我应该为XML返回的每个错误抛出一个异常,并用错误类来处理它们吗?
我在寻找的答案应该还包含一个资源链接,解释一些关于API封装器或类似事情的错误处理的最佳实践。
在此先感谢您的时间和回复。
编辑: 与我们的CTO交谈后,在当前版本的PHP错误也有例外,我应该抛出异常,并留下异常给调用者的交易。请记住,我正在为API实现包装类。思考?
'file_get_contents()'触发警告,如果它不能检索或读取资源,所以try ... catch不会帮助你。如果您使用诸如'Zend_Http_Client'的类,您将能够更容易地拦截失败。 – 2011-05-18 15:09:03