Exception-Bereich

Status
Nicht offen für weitere Antworten.

Kizz

Mitglied
Hi,

hab ne Frage zu Exceptions bzw. zum selbstdefinieren, was bei einer Exception passieren soll.
Geht das, dass man bei nem try/catch-Block im catch-Teil selbst etwas definiert, was im Falle einer Exception
passieren soll?

Hier mal der Code:
Dieser Thread wird beim Serverstart angeschubst und befindet sich dann in einer Endlosschleife.
Hier soll sekündlich überprüft werden, welche Clients (soll ein Chat werden) noch online sind.
Sprich, ich schicke einfach irgendwas an jeden einzelnen, bis dahin gespeicherten, Client.
Kommt es an, passts und es muss nix geändert werden. Ist der Client allerdings schon off,
müsste ja eigentlich ne Exception kommen, dass der Socket closed is oder sowas ähnliches.
Und da will ich dann eben im catch-Teil einhaken, den Client aus meiner Liste werfen und an alle
aktiven Clients den neuen Stand senden.

Code:
class CheckUsers extends Thread{
	
	Server server;
	String c;
	
	public CheckUsers(Server s){
		this.server=s;
	}
	
	public void run(){
		
		while(true){
			try{
				for (Enumeration e = server.clients.keys();e.hasMoreElements();){
					c=(String)e.nextElement();
					((ServerBody)server.clients.get(c)).send(" ");
				}
			}catch(Exception e){
				server.clients.remove(c);
			}
			try{
				this.sleep(1000);
			}catch(Exception e){e.printStackTrace();}
		}
	}
}
Der catch-Teil ist natürlich noch lang nicht fertig, soll nur mal zum veranschaulichen sein.

Dazu dann noch eine Frage:
Angenommen, es sind momentan 5 User online. User 3 geht nun off. Meine Schleife schmeißt nun bei User 3
die Exception, dieser wird gelöscht. Checkt in diesem Fall die for-Schleife noch die restlichen User?
Oder wird sogar die while-Schleife oder der Thread durch die Exception beendet?
Würde es klappen, in dem Fall am Schluß des catch-Teils den Thread mit this.start(); wieder anzuschubsen?
Wenn natürlich nur die for-Schleife beendet wird, aber die while-Schleife wieder neu beginnt, ist das ganz natürlich hinfällig ;)

Danke im Voraus!

Gruß, Kizz

P.S.: Nur so am Rande: Denkt ihr, die Performanz leidet bei sowas arg, wenn mehrere User angemeldet sind?
Oder fällt das nicht ins Gewicht?
Vielleicht hat auch jemand ne andere Möglichkeit, sowas zu realisieren.

Bzw. wärs natürlich am idealsten, wenn der Client als allerletzte Aktion einen Befehl schicken könnte, dass er nun gleich off ist. Man könnte nun natürlich einen "Schließen"-Button in der GUI einfügen, aber es gibt ja genug Leute, die auf das kleine x rechts oben klicken und wie ich das dann machen kann, dass noch ein letzter Befehl verschickt wird, weiß ich leider nicht.
 
T

tuxedo

Gast
Deine while-Schleife beeindruckt die Exception nicht. D.h. das wird so schon funktionieren. Allerdings würde ich bei den Exceptions etwas separieren. "Exception" ist gültig für alle Exceptions. Dir geht's aber um Socket-Exceptions, bzw. "IOExceptions". Die würde ich gesondert abfangen und je nach Excaption entsprechend reagieren.

Die For-Schleife sollte durch eine Exception unterbrichen werden... Wäre aber nicht allzutragisch, da das ganze ja eh in einer Endlosschleife hängt.

Diese Endlos-While-Schleife würde ich allerdings nicht mit "true" in der Bedingung laufen lassen sondern mit "isInterrupted()". So kannst du von außen wenigstens den Thread irgendwann wieder sauber beenden. Z.b. zum Server herunterfahren.

- Alex
 

Kizz

Mitglied
Ok, danke soweit.

Die Exception hab ich deswegen allgemein gehalten, weil ich mich bei den Arten der Exceptions noch nicht so auskenne
und daher nicht weiß, welche Exception nun geworfen wird.
Ausserdem dachte ich ganz einfach: wird ne Exception geworfen == User offline == User löschen == fertig ;)

Die Bedingung werd ich mal ändern, hört sich gut an.

Dann muss ich jetzt nur noch rauskriegen, warum das ganze trotzdem nicht funktioniert :D
Ich starte nacheinander 3 Clients, die werden mir auch korrekt angezeigt durch ne kleine Ausgabe, die ich eingebaut hab.
Jetzt beende ich einen und es passiert nix. Sprich, der User wird nicht entfernt.
Evtl ne Ahnung, an was das liegen könnte? Ich übergeb dem Thread das Serverobjekt, also kann ich ja ganz normal auf die clientliste zugreifen (momentan einfach public, mach ich evtl noch mit getter/setter). Dann sollten doch auch neue User diese aktualisierte Liste haben, oder?
 

Kizz

Mitglied
Ok, ich habs nun hinbekommen:
Der Thread CheckUsers is komplett weggefallen, ich fange die SocketException einfach in der Endlosschleife des Server-Threads ab, lösche darin dann den User aus der Liste und schließe die Verbindungen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Object cast exception Allgemeine Java-Themen 7
W Queue.remove() -> no such element exception Allgemeine Java-Themen 17
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
N Kann ich die Nullpointer Exception umgehen Allgemeine Java-Themen 12
N A java Exception has occured Allgemeine Java-Themen 8
G javafx "class path" exception Allgemeine Java-Themen 5
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
tom.j85 Exception bei Abfrage von Ländercodes in API? Allgemeine Java-Themen 13
S Exception Allgemeine Java-Themen 5
LimDul Streams und Exception Allgemeine Java-Themen 8
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
S Wertbeschränkung Exception oder Anpassung? Allgemeine Java-Themen 4
D Nullpointer Exception Problem Allgemeine Java-Themen 5
Kirby.exe Nullpointer Exception bei Queue Allgemeine Java-Themen 5
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
S RMI Exception Allgemeine Java-Themen 0
S MSSQL Exception & Connection String Allgemeine Java-Themen 19
S Interface, generischer Datentyp, Exception? Allgemeine Java-Themen 3
coolian warum bekomme ich ein string index out of bounds exception Allgemeine Java-Themen 17
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
M Klassen Serializable Exception Allgemeine Java-Themen 1
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
E Thread Exception Allgemeine Java-Themen 6
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
G Java/LibGDX File Loading Exception Allgemeine Java-Themen 2
B Exception in Application init method Allgemeine Java-Themen 5
H OOP Testen einer Exception mit JUnit Allgemeine Java-Themen 8
M javafx ComboBox- Nullpointer Exception Allgemeine Java-Themen 6
perlenfischer1984 Dialect class not found exception Allgemeine Java-Themen 15
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
perlenfischer1984 Functionsparameter prüfen und eine Exception werfen !? Allgemeine Java-Themen 11
E Probleme mit nextInt() und Exception Allgemeine Java-Themen 35
Z Exception wird nicht ausgelöst Allgemeine Java-Themen 2
0 Animiertes Gif anzeigen - NullPointer Exception Allgemeine Java-Themen 19
T Konstruktor löst exception aus Allgemeine Java-Themen 7
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
D Codeausführung bevor Exception abgeschlossen ist Allgemeine Java-Themen 11
T FileNotFound Exception Allgemeine Java-Themen 9
L Exception/Error auf JDialog umleiten Allgemeine Java-Themen 2
C Arithmetic Exception, obwohl nichts 0 ist Allgemeine Java-Themen 5
M A Java Exception has occured. Allgemeine Java-Themen 1
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
M Exception in thread "AWT-EventQueue-0" Allgemeine Java-Themen 6
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
E A Java Exception Has Occured Allgemeine Java-Themen 4
T Exception handling Allgemeine Java-Themen 7
P lazy loading exception Allgemeine Java-Themen 0
A Interpreter-Fehler OutOfMemory Exception mit Base64 decode Allgemeine Java-Themen 3
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
S Best Practice verschiedene Exceptions fangen und neue Exception erzeugen Allgemeine Java-Themen 11
K Exception in thread "AWT-EventQueue-1" Allgemeine Java-Themen 2
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
P Eigene Exception Klasse Allgemeine Java-Themen 7
N Java Interne Exception Allgemeine Java-Themen 4
B JUnit4 Exception-Test Allgemeine Java-Themen 4
127.0.0.1 SQL Exception, kein Driver Allgemeine Java-Themen 9
S Erste Schritte Exception beendet Schleife nicht - Methode macht trotz throw weiter? Allgemeine Java-Themen 9
R ZIP FileSystem unter Windows wirft exception Allgemeine Java-Themen 7
H java.util.Timer und Funktion mit SQL Exception Allgemeine Java-Themen 5
Ollek Barcode mit Barcode4J erzeugen - Exception Allgemeine Java-Themen 4
Z Concurrent Modification Exception - HashMap (kein remove) Allgemeine Java-Themen 4
E Eigene Exception Klasse erstellen Allgemeine Java-Themen 3
L Variablen IO Exception weil File angeblich nicht exisitert Allgemeine Java-Themen 10
T Exception versus Rückgabeparamter Allgemeine Java-Themen 26
S Exception enableDepthTest Allgemeine Java-Themen 7
M JAXB Reimport zu Hibernate DB -> Exception Allgemeine Java-Themen 3
W Kleine Frage zu Null-Pinter-Exception Allgemeine Java-Themen 21
aze JUnit: Testen ob bestimmte Exception nicht auftritt Allgemeine Java-Themen 18
S Null Pointer Exception bei BufferedReader Allgemeine Java-Themen 4
N Runtime.exec() Exception Problem Allgemeine Java-Themen 3
P Default constructor cannot handle exception type Allgemeine Java-Themen 6
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
S Bildaufbau durch Servlet -> Exception Allgemeine Java-Themen 11
E Queue: Wie kann hier ein null-Pointer Exception auftreten?! Allgemeine Java-Themen 11
S Exception beim Schreiben des Dataset in XML Datei Allgemeine Java-Themen 8
M Webstart Exception trotz signierten JARs Allgemeine Java-Themen 3
E Interpreter-Fehler unbekannte Exception Allgemeine Java-Themen 12
B Komische Exception Allgemeine Java-Themen 4
U SwingWorker und Exception Allgemeine Java-Themen 3
B Nullpointer Exception in Array Allgemeine Java-Themen 15
G WebService Exception Allgemeine Java-Themen 3
M Best Practices Exception Handling für eigene library Allgemeine Java-Themen 8
G PermSpace Exception Allgemeine Java-Themen 2
S Invalid Chunk Exception Allgemeine Java-Themen 3
N URLClassLoader Exception Allgemeine Java-Themen 5
Apo Java Sound Mark/Reset Exception Allgemeine Java-Themen 14
M Exception ganz sehen Allgemeine Java-Themen 2
D Problem mit EasyMock und Exception Allgemeine Java-Themen 6
B Exception wird geworfen, ich darf sie aber nicht abfangen. Allgemeine Java-Themen 10
7 Exception wird nicht aufgefangen Allgemeine Java-Themen 8
C Desktop.mail Problem. IO Exception: Failed to open. Allgemeine Java-Themen 3
L [Exception] RSA Verschlüsselung. Allgemeine Java-Themen 16
Final_Striker Exception bei neuem Look und Feel Allgemeine Java-Themen 2
N Exception beim auslesen einer JTable Allgemeine Java-Themen 5
nrg Stilistisch korrektes Exception Handling Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben