Ich verstehe, warum ein HttpServlet ServletException werfen würde, aber warum IOException? Was war der Grund dafür?Warum wirft HttpServlet eine IOException?
Antwort
Aus der Dokumentation:
IOException - wenn ein Ein- oder Ausgabefehler erkannt wird, wenn das Servlet die Anforderung GET Griffe
Dies kann passieren, wenn Sie die Servlet-Ausgabe drucken:
response.getWriter(). Print() - diese Methode löst IOException aus
Der Socket kann geschlossen werden, bevor die Antwort auf p endet rint die Ausgabe.
Wenn das Servlet über E/A-Schnittstellen in einen Ausgabestream (d. H. Die Seite) schreibt, wird jeder E/A-Fehler als IOException
gemeldet.
Vielleicht sollte die API nicht direkt I/O-Schnittstellen verwenden. Es ist nicht ungewöhnlich, dass WebApps RMI verwenden, damit die RMIException
über die Servlet-Schnittstelle fallen kann (aus irgendeinem Grund ist dies eine Unterklasse von IOException
).
Ich würde vorschlagen, dass ein IOException
zeigt ein Problem mit der Verarbeitung Eingabe/Ausgabe, z. Probleme beim Lesen von der Anfrageeingabe oder beim Schreiben der Antwort, während ein ServletException
mehr mit servletspezifischen Problemen zu tun hat, wie etwa Fehlern in Bezug auf Servlet-Bereitstellung/Initialisierung und Verarbeitungsanforderungen.
- 1. Warum wirft dieser Code eine IOException?
- 2. JUnit Regel TemporaryFolder wirft willkürlich eine IOException
- 3. Warum implementiert HttpServlet Serializable?
- 4. IOException - keine Ahnung warum?
- 5. Fileinfo CopyTo Verfahren wirft ein IOException (NET)
- 6. Warum Java StringReader IOException auslöst?
- 7. Warum wirft Javamail eine IOException, wenn eine Plain/Text-Nachricht geöffnet werden soll?
- 8. httpservlet Parameter sind null
- 9. Warum wirft AsQueryable eine StackOverflowException?
- 10. Warum wirft BitmapSource.Create eine ArgumentException?
- 11. Warum wirft NumberFormat.format eine NullPointerException?
- 12. Warum wirft XmlSerializer eine InvalidOperationException?
- 13. Warum verlängert SQLException IOException nicht?
- 14. Warum wirft dieses Hibernate-Servlet eine IllegalAccessError-Ausnahme?
- 15. Android NFC writeNdefMessage wirft IOException Tag ist nicht ndef
- 16. In. Warum wirft eine Ausnahme rechenintensiv?
- 17. Warum wirft meine App eine `android.permission.REBOOT SecurityException`?
- 18. Warum WCF Formatierer wirft eine Ausnahme?
- 19. Warum löst ASN1Object.getEncoded() IOException in BouncyCastle aus?
- 20. Warum wirft es in diesem Fall NullPointerException?
- 21. Warum wirft PyMongo AutoReconnect?
- 22. Warum wirft EndGetResponse ArgumentNullException?
- 23. Warum wirft Regex_match "Komplexitätsausnahme"?
- 24. Warum wirft Observable.Generate() System.StackOverflowException?
- 25. Warum wirft IPAddress.MapToIPv4() ArgumentOutOfRangeException?
- 26. Warum wirft cmd.executeNonQuery() ManagedDataAccess.Client.OracleException?
- 27. Warum wirft Android NullPointerException?
- 28. Warum String wirft Nullpointer
- 29. IOException beim Lesen von InputStream
- 30. java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
Eigentlich ruft 'print()' _doesnot_ eine IOException (das ist ein Gotcha!). Wenn Sie 'getOutputStream()' anstelle von 'getWriter()' aufrufen, haben Sie IOExceptions, aber der PrintWriter schluckt alle Schreibausnahmen. Sie müssen 'checkError()' nach Ihren Schreibvorgängen manuell aufrufen, um herauszufinden, ob etwas schief gelaufen ist. –