Perché HttpServlet genera un'eccezione IOException?
Domanda
Capisco perché un HttpServlet lanci ServletException, ma perché IOException? Qual è stato il ragionamento alla base di questo?
Soluzione
Dai documenti:
IOException - se viene rilevato un errore di input o output quando il servlet gestisce la richiesta GET
Questo può accadere quando si stampa l'output del servlet:
response.getWriter (). print () - questo metodo genera IOException
Il socket può essere chiuso prima che la risposta finisca di stampare l'output.
Altri suggerimenti
Suggerirei che un IOException
indica un problema con l'elaborazione dell'input / output, ad es. problemi nella lettura dell'input della richiesta o nella scrittura della risposta, mentre un ServletException
ha più a che fare con problemi specifici del servlet, come errori riguardanti il ??provisioning / inizializzazione del servlet e l'elaborazione delle richieste.
Se il servlet scrive su un flusso di output (ovvero la pagina) attraverso le interfacce I / O, qualsiasi errore I / O verrà segnalato come IOException
.
Forse l'API non dovrebbe usare direttamente le interfacce I / O. Non è raro che WebApps utilizzi RMI per consentire a RMIException
di passare attraverso l'interfaccia servlet (per qualche motivo è una sottoclasse di IOException
).