2009-04-29 8 views

Répondre

4

De la documentation:

IOException - si une entrée ou une erreur de sortie est détectée lorsque le servlet gère la requête GET

Cela peut se produire lorsque vous imprimez la sortie de servlet:

response.getWriter(). Print() - cette méthode lance IOException

La socket peut être fermée avant la fin de la réponse à p rint la sortie.

+0

En fait, l'appel 'print()' _n'a pas jeté une exception IOException (c'est un gotcha!). Si vous appelez 'getOutputStream()' plutôt que 'getWriter()', vous aurez des IOExceptions, mais PrintWriter avale toutes les exceptions d'écriture. Vous devez appeler manuellement 'checkError()' après votre écriture pour savoir si quelque chose s'est mal passé. –

0

Si la servlet écrit dans un flux de sortie (c'est-à-dire la page) via des interfaces d'E/S, toute erreur d'E/S sera signalée comme IOException. Il se peut que l'API n'utilise pas directement les interfaces d'E/S. Il n'est pas rare que les WebApps utilisant RMI autorisent le RMIException à tomber dans l'interface de servlet (c'est une sous-classe de IOException pour une raison quelconque).

3

Je suggérerais qu'un IOException indique un problème avec le traitement d'entrée/sortie, par ex. des problèmes de lecture à partir de l'entrée de requête ou d'écriture de la réponse, alors qu'un ServletException est plus lié à des problèmes spécifiques aux servlets, tels que des erreurs concernant le provisionnement/l'initialisation des servlets, et le traitement des demandes.

Questions connexes