Je comprends pourquoi un HttpServlet lancerait ServletException, mais pourquoi IOException? Quel était le raisonnement derrière cela?Pourquoi HttpServlet lance-t-il une exception d'E/S?
Répondre
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.
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).
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.
- 1. Pourquoi EventInfo.RemoveEventHandler lève une exception NullReferenceException?
- 2. Pourquoi OdbcCommand.ExecuteScalar() lève une exception AccessViolationException?
- 3. Pourquoi le formateur WCF lève une exception?
- 4. Pourquoi cette servlet Hibernate lance-t-elle une exception IllegalAccessError?
- 5. Pourquoi lancer une exception EJBException est une pratique "recommandée"?
- 6. Exception de service Web pourquoi?
- 7. Pourquoi voyons-nous une exception ModuleLoadExceptionHandlerException lors du test unitaire
- 8. comment obtenir l'adresse MAC d'un client à partir de HttpServlet?
- 9. Pourquoi une erreur "Exception non interceptée" s'affiche-t-elle?
- 10. Pourquoi AsQueryable lance-t-il une exception StackOverflowException?
- 11. Pouvez-vous comprendre pourquoi ce programme déclenche une exception IllegalStateException?
- 12. En .net pourquoi lancer une exception de calcul lourd?
- 13. Erlang: Pourquoi cela échoue-t-il avec une exception 'badarith'?
- 14. Pourquoi une exception XmlException "Fin de fichier inattendue" avec TextMessageEncodingBindingElement?
- 15. Pourquoi UnhandledExceptionEventArgs.ExceptionObject est-il un objet et non une exception?
- 16. Pourquoi Java me donne-t-il une exception IllegalArgumentException?
- 17. Pourquoi XPathSelectElement donne-t-il une exception NullReferenceException?
- 18. Pourquoi TempFileCollection renvoie-t-il une exception à AddExtension ("tmp")?
- 19. Pourquoi mon exception n'est pas interceptée
- 20. Pourquoi un GetType sur une propriété de chaîne entraîne-t-il une exception NullReferenceException?
- 21. Pourquoi est-ce que je reçois une exception IllegalArgumentException avec ce code pour créer une image?
- 22. Foreach peut lancer une exception InvalidCastException?
- 23. Pourquoi ai-je cette exception SocketException dans mon service C#?
- 24. Pourquoi l'analyse de cette chaîne de date jette-t-elle une exception de date indissociable?
- 25. La libération de NSData provoque une exception
- 26. Pourquoi ne puis-je pas intercepter une exception générique en C#?
- 27. Une exception est rencontrée java.lang.UNIXProcess.forkAndExec
- 28. rejette une exception d'un JSP
- 29. Comment éviter une exception NullReferenceException
- 30. Pourquoi mon script JScript (Windows Script Host) sort-il avec 0 sur une exception non interceptée?
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é. –