2012-03-22 17 views
7

L'analisi del messaggio di stringa sembra errata. O questa eccezione non voleva essere catturata?Come rilevare la IOException "Connessione ripristinata dal peer"?

java.io.IOException: Connection reset by peer 
    at sun.nio.ch.FileDispatcher.read0(Native Method) 
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21) 
+1

Maggiori dettagli o stacktrace o codice per favore –

risposta

4

avete bisogno di recuperare il IOException e, sì, analizzare la stringa.

Non c'è altra eccezione più specifica di quella da catturare per quanto ne so.

Oppure prendere SocketException e, di nuovo, analizzare la stringa.

Here è l'albero delle classi di javadoc (versione 6). Come potete vedere, SocketException è l'eccezione più specializzata da lanciare quando viene ripristinata la connessione.

+2

Non è un SocketException, è un IOException. Catching SocketException pertanto non funzionerà. La tua frase finale è competentemente incorretta se non senza senso. – EJP

+0

'Viene generato per indicare che c'è un errore nel protocollo sottostante, come un errore TCP.» (Descrizione SocketException in javadoc) Il reset della connessione è un errore TCP (codice di errore 10054). –

+0

Irrilevante. Quando si ottiene un'eccezione con il testo "reset della connessione", si tratta di una 'IOException', non una' SocketException'. Provalo. Non puoi solo dedurlo dalla gerarchia delle classi Javadoc. – EJP

1

La JVM non fa alcuna differenza circa la vera causa dell'errore, quindi si getterà un genericaIOException in ogni caso (adattatore scollegato, timeout, errore ICMP ...). Solo la stringa leggibile dall'uomo descrive l'errore e non c'è nulla che tu possa fare al riguardo.

Problemi correlati