我個人使用rever se-DNS風格的域名。例如:
NSError * myInternalError = [NSError errorWithDomain:@"com.davedelong.myproject" code:42 userInfo:someUserInfo];
域(@"myproject"
)的第三部分只是用於區分在另一個項目("My Other Project"
=>com.davedelong.myotherproject
)從錯誤這個項目("My Project"
)中的錯誤。
這是一個簡單的方法,以確保我不會用別人的錯誤域衝突(如果我使用第三方代碼),除非開發商故意想惹只是我(我相信會不太可能......)。
至於代碼編號衝突,不要擔心。只要代碼在域內是唯一的,你應該沒問題。
至於翻譯錯誤,這取決於你。無論你做什麼,都要確保你記錄得很好。 個人問題,我通常會在他們找到我時傳遞框架生成的錯誤,因爲我從來不確定是否會處理所有代碼並將所有userInfo轉換爲更具體的項目。這些框架可以改變和添加更多的代碼,或者改變現有代碼的含義等。它還幫助我更具體地確定錯誤來自哪裏。例如,如果我的StackKit框架在com.stackkit
域中產生錯誤,我知道這是一個框架問題。但是,如果它在NSURLErrorDomain
中生成錯誤,那麼我知道它特別來自URL加載機制。
什麼你可能要做的就是捕捉框架產生的錯誤,並在具有您的域名和通用代碼,像kFrameworkErrorCodeUnknown
什麼新的錯誤對象包裝它,然後將捕獲的錯誤在userInfo
下NSUnderlyingErrorKey
。 CoreData可以做很多事情(例如,如果你嘗試使用和NSManagedObjectContext
,但你有關係完整性錯誤,你會得到一個錯誤,但是NSUnderlyingErrorKey
將包含更多的信息,比如具體哪些關係是錯誤的,等等)。
由於蘋果也使用反向DNS,因此其他人也可以使用這種風格。 – 2015-01-15 07:52:36
鏈接到StackKit框架(stackkit.com)已經死亡。 – Pang 2015-08-09 06:19:52