Dove devo gestire le eccezioni fatali

6

Supponiamo di avere un controller che carica un file e lo consegna all'elaborazione.

  • Dovrei gestire l'eccezione nel caricatore di file e restituire Null se qualcosa non va, o dovrei lanciare l'eccezione e gestirla nel controller?

  • Senza il file il resto del programma non può funzionare. Dove dovrei gestire un'eccezione che spegne il programma correttamente?

Voglio chiudere correttamente un'applicazione Android.

    
posta Puckl 03.10.2012 - 14:35
fonte

2 risposte

6

In parole semplici:

  • Non si dovrebbe restituire null.
  • L'eccezione dovrebbe essere gestita nel livello più in alto.
  • Il programma non dovrebbe terminare, ma fornire un feedback all'utente, a meno che non si tratti di un programma a riga di comando in stile Unix in cui va bene terminare dopo aver mostrato un messaggio di errore.
  • Per definizione nessuna eccezione è fatale e ognuno può essere gestito.
  • Gli errori sono fatali e non possono essere ripristinati da.
  • Le eccezioni e gli errori non sono uguali.
risposta data 03.10.2012 - 14:46
fonte
0

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.

    
risposta data 24.07.2013 - 01:41
fonte

Leggi altre domande sui tag