La risposta breve: registrala, forse avvisa l'utente e forse continua l'esecuzione della tua applicazione.
Le modifiche avvengono continuamente. In produzione. Senza preavviso. Spesso per errore.
Anche con le politiche di controllo dei cambiamenti scolpite nella pietra, gli errori accadono. Un DBA che ottimizza una query rilascia una tabella. Uno sviluppatore con un accesso eccessivo rimuove accidentalmente una colonna. Uno dei DBA sposta le tabelle su uno schema diverso. Un database diventa danneggiato.
Queste sono alcune delle cose che ho visto accadere nei database di produzione live nel corso degli anni. Ognuno mi ha fatto molto piacere che ci fossero backup delle applicazioni di produzione.
Ci sarà sempre qualcosa che va storto. Questo è uno dei motivi per cui si ha il codice di gestione degli errori nelle applicazioni di produzione: per impedire che una sezione del codice provochi l'errore generale di tutto questo.
Errori
Registra tutto ciò che è un errore con il maggior numero di dettagli possibile. Includi il messaggio di errore completo (ove possibile). Assicurati che il tuo codice possa essere chiuso correttamente quando un errore è sufficientemente dannoso da richiederlo. E ricorda che la tua app si è conclusa con la forza. Mostrare errori all'utente è qualcosa che dovresti fare nella maggior parte, ma non in tutte le circostanze.
Avvertenze
Registra avvisi, ma acquisisci solo le informazioni minime necessarie per diagnosticare e correggere il problema. È possibile che si desideri impostare un flag che consenta in via condizionale di registrare gli avvisi (e / o i messaggi informativi). Questo aiuterà a mantenere il file di registro piccolo. I messaggi di avviso sono per lo più qualcosa che vorresti mostrare all'utente, specialmente quando l'utente può apportare modifiche per correggere il problema.
Messaggi informativi
Registra solo gli elementi informativi quando hai bisogno di informazioni normalmente non importanti. Nel codice di produzione, ho trovato utile che i messaggi informativi includessero quando si entra e si lascia una funzione, un metodo, proprietà (quando fanno più valori get / put), avvia e chiude le istanze singleton (ad es. SerialPort). Questi messaggi informativi non devono essere mostrati all'utente.