2009-04-29 12 views

Antwort

4

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.

+0

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. –

0

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).

3

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.

Verwandte Themen