[Java] Kan fout niet ondervangen?

Pagina: 1
Acties:

  • b19a
  • Registratie: September 2002
  • Niet online
Ik heb een ServerSocket en gebruik hierin o.a. de volgende code:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
                while(true) {
                    try {
                        String line=_inputStream.readLine();
                        /* code */
                    } catch(IOException e) {
                        e.printStackTrace();
                        inputState="<end_of_session/>";
                    } catch(Exception e) {
                        System.out.println("Wonderlijke allesvanger:");
                        e.printStackTrace();
                        inputState="<end_of_session/>";
                    }
                }

Als ik dan de server laat draaien en ik sluit de client via taakbeheer, dan gaat deze code raar doen. Hij spuugt de volgende error in een rap tempo:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:113)
    at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:411)
    at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:453)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:183)
    at java.io.InputStreamReader.read(InputStreamReader.java:167)
    at java.io.BufferedReader.fill(BufferedReader.java:136)
    at java.io.BufferedReader.readLine(BufferedReader.java:299)
    at java.io.BufferedReader.readLine(BufferedReader.java:362)
    at serverclient.Server2$SocketHandler.run(Server2.java:75)
    at serverclient.Server2.<init>(Server2.java:38)
    at serverclient.Server2.main(Server2.java:181)


Ik wil dus deze error ondervangen zodat ik de verbinding server-side netjes af kan sluiten. Ik heb allerlei dingen geprobeert, maar niks lijkt te lukken. Zie ik wat over het hoofd?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 04-05 14:55

Janoz

Moderator Devschuur®

!litemod

Welke regel is 75 in Server2.java?

Sowieso vind ik het een beetje een vreemde constructie. De try en catch zitten binnen de whilelus zodat ze telkens weer opnieuw op zullen treden. Maar het kan natuurlijk zijn dat dit op een andere manier in de verwijderde code afgehandeld wordt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • drice
  • Registratie: December 2000
  • Laatst online: 16:09

drice

Loading...

op het moment dat je catch moet je eigenlijk uit je while stappen.

while(running) {...

en dan in de catch running = false;

Did you know that IF is a middle word in life. "Ja maar wie ben ik om aan mezelf te twijfelen"


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Of gewoon die catch buiten de while lus plaatsen ;)

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 14:44

Kees

Serveradmin / BOFH / DoC
Wat is het probleem nu?

Je catch een IOException (SocketException extends IOExcheption) en doet een printStacktrace, die krijg je te zien. Wil je die niet zien? of wat anders? dan moet je dat doen :P

En uiterwaard de while binnen de try brengen.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • b19a
  • Registratie: September 2002
  • Niet online
8)7 Jullie hebben gelijk... ik moest nog uit de while lus stappen en 't probleem is verholpen. Ik heb Alarmnummer's raad opgevolgd en heb de while binnen de try-catch geplaatst en 't draait weer als een tiet!

Danke!

edit:
Regel 75 was die readLine()

[ Voor 14% gewijzigd door b19a op 22-04-2005 01:35 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

BoukeHaarsma schreef op vrijdag 22 april 2005 @ 01:32:
8)7 Jullie hebben gelijk... ik moest nog uit de while lus stappen en 't probleem is verholpen. Ik heb Alarmnummer's raad opgevolgd en heb de while binnen de try-catch geplaatst en 't draait weer als een tiet!
Gelukkig heb je mijn raad opgevolgd en niet dat van Janoz :+

[ Voor 4% gewijzigd door Alarmnummer op 22-04-2005 08:29 ]

Pagina: 1