Questo suona familiare.
Una volta ero il manager di un gruppo con una grande applicazione che aveva alcune eccezioni non gestite che alla fine erano state prese come un gestore globale di catch-all-and-display-the-world-has-ended. Di default questo permetteva di continuare a girare l'applicazione.
Il tuo punto sullo stato dell'applicazione in questo caso è lo stesso che ho fatto: l'applicazione non dovrebbe continuare a funzionare perché il suo stato interno è sconosciuto e molto probabilmente sospetto (dopotutto è così che è stata sollevata un'eccezione in primo luogo ).
Volevo che l'applicazione fosse modificata in modo che l'utente potesse salvare i dati e quindi l'applicazione sarebbe uscita, senza possibilità di continuare. Ciò è stato accolto da una feroce resistenza, principalmente da parte di sviluppatori che hanno sostenuto di aver continuato per un lungo periodo e che ci sono stati danni minimi - solo un sacco di lamentele. Alla fine ho dovuto retrocedere - l'utente poteva continuare, ma le finestre di dialogo sono state modificate per suggerire agli utenti che dovrebbero uscire e riavviarsi. Continuo a pensare che fosse sbagliato.
Alla fine, ogni eccezione che viene vista deve essere analizzata per trovare la causa sottostante e correzioni appropriate, modifiche al codice o qualsiasi altra cosa da applicare in modo che le eccezioni non avvengano - o se lo fanno vengono catturate come parte del normale flusso del programma e gestito localmente.
(A volte, purtroppo, le eccezioni vengono propagate da cose come le librerie.Una delle regole che mi è stata insegnata molto tempo fa era: "non fare mai affidamento sulle eccezioni per il normale flusso di programma". Sembra che questo non sia sempre più regolarmente praticato.)
Sento il tuo dolore - ma alla fine, il principio è semplice e dovresti rimanere fedele ad esso: quando viene sparato l'ultimo gestore di eccezioni, le cose sono davvero malate. Il programma dovrebbe uscire. Fare altrimenti dà agli utenti l'impressione fuorviante di poter continuare a lavorare, ma internamente il programma ha uno stato sconosciuto o rotto. Continuare a lavorare porta solo a peggiorare progressivamente le cose. Alla fine ciò si traduce in perdita di soddisfazione del cliente. I clienti sono anche incazzati da un programma che solleva un'eccezione ed esce - se c'è stato del programma non salvato dovresti provare a salvarlo, forse in un modo che chiarisca che ciò che viene salvato potrebbe non essere affidabile. Almeno riduci la possibilità di perdita di dati. Ma continuando a operare ... brutta mossa sbagliata. Devi scegliere il minore di 2 mali.