Io personalmente uso un rever dominio di stile se-DNS. Per esempio:
NSError * myInternalError = [NSError errorWithDomain:@"com.davedelong.myproject" code:42 userInfo:someUserInfo];
La terza parte del dominio (@"myproject"
) è solo utilizzato per differenziare gli errori di questo progetto ("My Project"
) da errori in un altro progetto ("My Other Project"
=>com.davedelong.myotherproject
).
E 'un modo semplice per assicurare che io non ho intenzione di entrare in conflitto con i domini di errore di chiunque altro (se sto utilizzando il codice 3a parte), a meno che lo sviluppatore è volutamente cercando di pasticciare con solo io (che ho credo sarebbe altamente improbabile ...).
Per quanto riguarda i conflitti di numerazione del codice, non preoccuparti. Basta che i codici siano univoci all'interno di un dominio, dovresti essere OK.
Per quanto riguarda la traduzione degli errori, dipende da voi. Qualunque cosa tu faccia, assicurati di documentarla bene. Personalmente, di solito trasmetto gli errori generati dal framework non appena sono arrivati da me, poiché non sono mai abbastanza sicuro che gestirò tutti i codici e tradurrò tutte le informazioni utente in qualcosa di più specifico del mio progetto. I framework potrebbero cambiare e aggiungere più codici, o cambiare il significato dei codici esistenti, ecc. Inoltre mi aiuta a identificare in modo specifico da dove proviene l'errore. Ad esempio, se il mio framework StackKit genera un errore nel dominio com.stackkit
, so che si tratta di un problema di framework. Tuttavia, se genera un errore nello , allora so che proviene specificamente dal meccanismo di caricamento degli URL.
Quello che poteva fare è catturare l'errore quadro generato e avvolgerlo in un nuovo oggetto errore che ha il vostro dominio e un codice generico, qualcosa come kFrameworkErrorCodeUnknown
o qualcosa del genere, e quindi posizionare l'errore catturato nel userInfo
sotto la NSUnderlyingErrorKey
. CoreData fa molto (ad esempio, se provi a save:
un NSManagedObjectContext
, ma hai errori di integrità della relazione, riceverai un unico errore, ma lo NSUnderlyingErrorKey
conterrà molte più informazioni, come nello specifico quali relazioni sono sbagliate, ecc.).
fonte
2010-07-18 16:45:02
Poiché Apple utilizza anche il DNS inverso, sembra appropriato che anche altri utilizzino questo stile. –
Il collegamento al framework StackKit (stackkit.com) è guasto. – Pang