In generale può essere una buona logica la tua, ma in ogni caso la cosa più importante è che
in presenza di un errore il sistema deve restare in uno stato consistente, se ciò non è possibile
è molto meglio lasciare che il programma si chiuda.
Su "Accelerated C# 2008" ho letto un paragrafo interessante sulla gestione delle eccezioni
chiamato "Achieving Exception Neutrality"
che spiega come sia meglio scrivere codice Neutrale alle eccezioni, cioè scrivere codice che
non può in alcun modo "schiantare".
A volte poi mi sono ritrovato nella situazione in cui era meglio non gestire l'eccezione o meglio
wrapparla e rispedirla indietro al chiamante