Domanda

Nei framework di registrazione come log4j & amp; log4net hai la possibilità di registrare vari livelli di informazioni. La maggior parte dei livelli ha intenzioni ovvie (come ciò che un registro "Debug" è vs. un "Errore"). Tuttavia, una cosa su cui sono sempre stato timido è stata classificare la mia registrazione come "fatale".

Quali tipi di errori sono così gravi da essere classificati come fatali? Sebbene questo sia leggermente orientato alle maiuscole, quali sono alcune delle regole empiriche che usi quando decidi di registrare un'eccezione come fatale o semplicemente un errore?

È stato utile?

Soluzione

Considero errori fatali quando l'applicazione non è in grado di svolgere alcun lavoro più utile. Gli errori non irreversibili si verificano quando si verifica un problema ma l'applicazione può continuare a funzionare anche a un livello ridotto di funzionalità o prestazioni.

Esempi di errori fatali includono:

  • Esaurendo lo spazio su disco sul dispositivo di registrazione e ti viene richiesto di continuare la registrazione.
  • Perdita totale della connettività di rete in un'applicazione client.
  • Informazioni di configurazione mancanti se non è possibile utilizzare alcun valore predefinito.

Gli errori non fatali includono:

  • Un server in cui una singola sessione ha esito negativo per qualche motivo ma è comunque possibile servire altri client.
  • Un errore intermittente, come una sessione persa, se è possibile stabilire una nuova sessione.
  • Informazioni sulla configurazione mancanti se è possibile utilizzare un valore predefinito.

Altri suggerimenti

Un errore è irreversibile se manca qualcosa o si verifica una situazione per la quale l'applicazione semplicemente non può continuare. Possibili esempi sono un file config.file richiesto mancante o quando un'eccezione "bolle" e viene rilevata da un gestore di eccezioni non gestito

Userei fatale se il mio prossimo passo è la chiusura dell'applicazione, o semplicemente non fare più lavori successivi. Se l'applicazione fa parte di un batch o sono in esecuzione più processi, ciò può essere utile per tracciare ciò che è accaduto.

Se esiste una possibilità di recupero (ad es. perdita della connessione di rete con tentativi per un po ') non userei un fatale.

Se ho più thread di servizio attivati ??da un thread principale e uno di questi non riesce a causa di un input errato ma l'applicazione può ancora servire nuove richieste, non lo considero fatale.

Per rendere questa risposta breve e dolce, se la tua applicazione si blocca, la considero fatale. Se non riesci a connetterti a una risorsa importante come un database o un servizio richiesto, ciò sarebbe fatale. Nel complesso, direi che se impedisce la corretta esecuzione dell'applicazione e influisce sull'utente, la classificherei come un errore irreversibile.

Ma il modo più importante per classificare gli errori è seguire coerentemente una regola empirica come la regola 69 in Standard di codifica C ++ :

  

" Sviluppa una politica di gestione degli errori pratica, coerente e razionale nelle prime fasi della progettazione e poi atteniti ad essa. "

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