Domanda

Devo standardizzare il modo in cui classifico e gestisco "con grazia" errori / eccezioni.

Attualmente utilizzo un processo tramite il quale riporto gli errori a una funzione che passa un numero di errore, un codice di gravità, informazioni sulla posizione e una stringa di informazioni extra. Questa funzione restituisce vero booleano se l'errore è fatale e l'app dovrebbe morire, altrimenti falso. Come parte del processo, oltre al feedback visivo per l'utente, la funzione ha anche errori di log-to-file di livello superiore al livello di gravità.

Il numero di errore indicizza un array di stringhe che spiegano il tipo di errore, ad esempio: "Accesso al file", "Input utente", "Creazione thread", "Accesso alla rete", ecc. Il codice di gravità è binario O di 0 , 1,2 o 4, 0 = informativo, 1 = cancellazione_utente, 2 = incompleto, 4 = impossibile_continuare. Le informazioni sulla posizione sono module & amp; e Extra-info sono valori di parametri e variabili locali.

Voglio trasformarlo in un modo standard di gestione degli errori che posso inserire in una libreria e riutilizzare in tutte le mie app. Uso principalmente C / C ++ su Linux, ma vorrei utilizzare la libreria risultante anche con altre lingue / piattaforme.

  • Un'idea è di estendere il tipo di errore array per indicare alcuni valori predefiniti comportamento per un determinato livello di gravità, ma dovrebbe quindi diventare il azione intrapresa e non dare opzioni a l'utente?

  • Oppure: tale estensione dovrebbe essere a sotto-array di opzioni che l'utente devi scegliere? Il problema con questo è che le opzioni avrebbero necessità essere generalizzati opzioni relative alla programmazione che possono molto bene completamente confuso un l'utente finale.

  • Oppure: ogni app che usa il la routine error-lib passa da sola matrice di errori o impostazione predefinita comportamenti - ma questo sconfiggerà il scopo della biblioteca ...

  • Oppure: dovrebbero essere i livelli di gravità gestito in ogni app?

Oppure: cosa mi consigliate? Come gestite gli errori? Come posso migliorare questo?

È stato utile?

Soluzione

Il modo in cui gestisci gli errori dipende davvero dall'applicazione. Un'applicazione Web ha un meccanismo di cattura degli errori diverso da un'applicazione desktop ed entrambi differiscono drasticamente da un sistema di messaggistica asincrono.

Detto questo, una pratica comune nella gestione degli errori è gestirla al livello più basso possibile dove può essere gestita. Questo di solito significa Application Layer o GUI.

Mi piacciono i livelli di gravità. Forse è possibile disporre di una libreria di raccolta errori collegabile con diversi provider di output degli errori e provider di livello di gravità.

I provider di output potrebbero includere elementi come logginProvider e IgnoreErrorsProvider. I fornitori di gravità sarebbero probabilmente qualcosa di implementato da ciascun progetto poiché i livelli di gravità sono generalmente determinati dal tipo di progetto in cui si verifica. (Ad esempio, i problemi di connessione di rete sono più gravi per un'applicazione bancaria che per un sistema di gestione dei contatti).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top