2008-11-17 53 views
4

幾周前,我開始在非平凡的應用程序中首次使用Core Data。讓我感到驚訝和困惑的事情之一是錯誤處理的工作原理。舉個例子,我嘗試的第一件事就是將我的數據文件設置爲Finder中的「鎖定」,以便確保在設置文件URL時正確處理由引用返回的NSError對象。令我驚訝的是,持久性商店協調員不是返回nil並設置NSError,而是從底層的NSData中提取未捕獲的異常!Core Data中的錯誤處理

與此同時,好像錯誤處理是一個有點不必要有時在覈心數據。例如,我沒有看到任何明顯的原因,爲什麼取出請求會需要超出程序員錯誤的錯誤處理(順便說一句,這也引發了我的經驗中的異常)。在這些情況下,我一直在爲NSError引用指針傳遞NULL。

在try/catch塊和NSError之間我可能花了很多時間來編寫代碼來安撫Core Data,但是我想對它做實踐,所以我沒有花費時間在永遠不會運行的錯誤代碼上。考慮到這一點,您如何在應用程序中處理錯誤處理?你在現實世界中看到了什麼錯誤,你應該確保說明什麼?

回答

2

錯誤處理方向,蘋果公司一直採取從1.4一直NSError錯誤,應用程序應該知道(如你在上述一個)和異常的編程錯誤(即不應該讓過去QA)。

一般來說,您應該根據這些準則進行編程。當你發現這樣的問題時,你現在可以根據你發現的實際結果編寫一個處理程序,但是你也應該立即向蘋果發佈一個錯誤報告,因爲這種模式與他們採用的模式相反。

您可以發佈的bug報告http://bugreport.apple.com/。您將需要一個ADC帳戶,但您可以使用免費帳戶發佈錯誤報告。我發現他們對開發工具包中的錯誤以及類似的問題非常敏感,因爲框架的行爲與他們所陳述的設計模式相矛盾。

+0

這是一個很好的建議,但我真的希望得到一些更實用的建議,以瞭解我最可能遇到的真實世界核心數據應用程序出現哪些錯誤。 – 2008-11-22 22:36:25