Stiamo progettando un framework di gestione degli errori per una libreria crittografica scritta in C
L'approccio che stiamo adottando è che relativamente pochi errori vengono propagati all'utente poiché nella maggior parte dei casi non può fare nulla su di essi (eccezione notevole: errori di validazione dei parametri. Ovviamente si dice all'utente se una chiamata è andata a buon fine. d anche creare voci di registro per l'analisi dei guasti.) In breve, solo perché abbiamo una condizione di errore da qualche parte all'interno della libreria, non significa che abbiamo bisogno di un codice di errore pubblico (rivolto all'utente) per questo.
Inoltre, dalle esperienze passate pensiamo che una porzione significativa di condizioni di errore che richiedono codici di errore riguardano aree di codice molto ristrette, spesso accade che un particolare errore sia restituito solo da (o impostato da) una funzione.
Pertanto vorremmo definire i codici di errore al livello più basso possibile. Ad esempio, se solo una funzione può restituire / impostare un particolare codice di errore, definiremo quel codice nel file .h in cui è stato dichiarato il prototipo della funzione.
Tuttavia, in tal caso potremmo ottenere conflitti nel codice di errore: lo stesso valore del codice di errore per errori diversi. Qualcuno può proporre un approccio elegante per evitare tali conflitti? O almeno un meccanismo automatizzato per verificare tali conflitti (che possono quindi essere risolti a mano)?