Le eccezioni dovrebbero andare fino a quando non raggiungono il livello in cui devi prenderti cura di loro (ad esempio prendile e agisci di conseguenza).
Nel tuo esempio, sembra che tu debba caricare un file; se il file non viene trovato o è danneggiato, si desidera chiudere l'applicazione. In questo caso, sembra che dovresti rilevare l'eccezione nel livello più esterno (loader - > controller - > ... - > punto di ingresso - cattura qui), presentare un messaggio di errore all'utente e uscire. Cogliere l'eccezione da qualsiasi altra parte renderà il tuo codice più complicato e difficile.
Questo ha senso se il file non è qualcosa che dipende dall'utente e l'utente non può fare nulla per correggere il file se è sbagliato o mancante.
D'altra parte, se il file è uno scelto dall'utente (o può essere), dovresti mostrare un messaggio di errore all'utente, e poi dare l'opportunità di trovare il file giusto invece di uscire.