Come dovrebbe la mia applicazione web gestire errori comuni come password errata, timeout della sessione, ecc.?

3

Come dovrebbe la mia applicazione web gestire errori comuni come password errata, timeout di sessione, ecc.?

Ho una classe chiamata Hotmail che contiene vari metodi come login, logout ecc.

Per illustrare la confusione, ho un metodo di accesso che registra l'utente in Hotmail tramite il mio software. Il metodo di login restituisce un oggetto HttpWebResponse. Tuttavia, all'interno del metodo di accesso può accadere un numero qualsiasi di cose come l'inserimento di credenziali errate o un timeout.

Sono in una certa confusione su come e dove gestire tali errori.

In caso di immissione delle credenziali errate o di un timeout, sarebbe inutile o talvolta impossibile restituire un oggetto HttpWebResponse. Quale sarebbe il modo migliore per gestire tali errori?

Devo creare eccezioni personalizzate in modo che il codice che sta chiamando il metodo possa controllare tali errori e gestirli?

Qual è il modo convenzionale per gestire questo tipo di errori, perché sono sicuro che questo è un punto comune di confusione?

    
posta James Jeffery 27.02.2013 - 15:35
fonte

3 risposte

7

Il modo convenzionale è di restituire un'eccezione personalizzata e lasciare che il codice chiamante decida cosa succede allora.

Immagina che il tuo comando "login" sia confezionato come una libreria e utilizzato in più applicazioni. In un'applicazione, se è presente un timeout, si desidera visualizzare un messaggio di errore e rinunciare. In un'altra applicazione, in caso di timeout, si desidera riprovare il metodo tre volte e abbandonare solo se tutti e tre gli accessi non riescono al timeout. Fornendo un'eccezione, offri a entrambe le applicazioni l'opportunità di fare quello che vogliono.

Potrebbe essere allettante, ma non provare a inserire entrambe le due opzioni nel comando "login", ad es. aggiungendo un nuovo parametro "howManyRetriesOnTimeout". Una terza applicazione potrebbe voler fare qualcos'altro. Inoltre, come regola generativa, non è consigliabile inserire più funzionalità (accedere, ripetere il timeout) in un unico metodo.

    
risposta data 27.02.2013 - 15:45
fonte
1

Dovresti iniziare dividendo i possibili errori in due categorie: quelle che l'utente può eventualmente correggere e il resto. Ciascuna di queste categorie dovrebbe avere un approccio separato.

Se si verifica un problema con le credenziali o il timeout è stato superato, l'utente deve essere informato di ciò al fine di adottare misure. Dovresti mostrare all'utente un messaggio che indica il problema in modo user-friendly (ad esempio, non stampare la traccia dello stack).

Per quanto riguarda la creazione di eccezioni personalizzate, questo non è proprio specifico per il tipo di applicazione che stai sviluppando. Tutti i consigli generali e le migliori pratiche possono essere utili. Considerare inoltre l'utilizzo di codici di stato per tali errori anziché generare eccezioni.

    
risposta data 27.02.2013 - 15:48
fonte
0

Gli esempi che fornisci sono cose che richiedono un'azione da parte dell'utente. Ti suggerisco di dire all'utente con la massima chiarezza possibile cosa è andato storto e cosa devono fare.

Dal sito dell'esperienza utente

Help users recognize, diagnose, and recover from errors - Error messages should be easily read and understood by the users, and should tell them what to do to fix this (e.g don't write "Error 1052" and let the users search the solution themselves, but instead write "We couldn't locate you. Please turn on your phone's GPS under Settings").

link

    
risposta data 27.02.2013 - 15:44
fonte

Leggi altre domande sui tag