Ridondanza delle eccezioni Java

1

In che misura si dovrebbero rendere le eccezioni ridondanti o atomiche a un metodo.

Ad esempio, supponiamo di avere un metodo public void authenticate(String username, String password) che chiama private void invokeServer(String username, String password) .

Entrambi i metodi richiedono che i parametri siano di lunghezza diversa da zero e, in tal caso, aumenterei un NullPointerException se necessario. Devo verificare se invokeServer e authenticate in base al fatto che potrebbe essere potenzialmente utilizzato in modo indipendente in un secondo momento?

    
posta retrodev 28.08.2013 - 14:07
fonte

2 risposte

3

Prima di tutto, non vuoto e NullPointerException sono due bestie diverse, quindi non devi assolutamente gettare un NPE per una stringa vuota non nulla.

In generale, ha senso pensare alle eccezioni a un livello superiore rispetto al tipo di livello null / non vuoto. Nel tuo caso, stai prendendo circa un username , o anche più generale, quando combini i due attributi di cui stai parlando. Ed ecco, entrambi i tuoi metodi in un modo o nell'altro trattano le credenziali di accesso, quindi un InvalidLoginCredentialsException o qualcosa del genere si adatta bene a entrambi i luoghi (e probabilmente anche ad altri).

Quando pensi ai casi di errore dal punto di vista della tua azienda o dei tuoi clienti, assegnando casi d'uso o domini (o qualsiasi parola di fantasia del genere, che è attualmente in voga), dovresti avere un tempo molto più facile per deduci le eccezioni a un livello di granularità utile.

    
risposta data 28.08.2013 - 14:22
fonte
0

Versione breve

Nel tuo caso dovrebbe essere sufficiente un controllo. In quale metodo dipende dal codice e dalle linee guida per la codifica.

Versione lunga

Prima di tutto, è necessario controllare l'input sul server. Se c'è un problema, il server dovrebbe lanciare un BusinessException (con un messaggio appropriato).

Sul lato client, hai due opzioni:

  • fare un tentativo, inviare l'input al server e presentare il potenziale errore all'utente.
  • sanità - controlla i valori di input per dire all'utente che qualcosa non va anche prima di inviare dati al server (ad esempio in JSF puoi registrare validatori per i componenti).

Infine, devi ancora fare i conti con BusinessException s potenzialmente lanciati sul lato client, perché è possibile che l'input sia valido ma il server continua a riportare un errore. Pertanto dovresti implementare una sorta di GeneralErrorHandler sul client, che cattura eventuali eccezioni non rilevate e le presenta in modo leggibile.

(Ricorda che la lingua dell'utente potrebbe essere diversa da quella del messaggio di eccezione.)

    
risposta data 28.08.2013 - 15:30
fonte

Leggi altre domande sui tag