我正在開發一個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