Exception wird geworfen, ich darf sie aber nicht abfangen.

Bradan

Mitglied
Hallo,

Ich hab ein Problem mit den Exceptions und Java. Wir senden Daten über einen Socket zu einem Client. Dieser verwendet den InputStream um ungefähr durch folgende Zeilen Audiodaten abzuspielen:

Java:
Player player = new Player(receiveSocket.getInputStream());
player.play();

So, nun wird aber wenn der Server geschlossen wird eine SocketException bei player.play() geworfen, was auch ganz logisch ist. Aber Java verbietet es uns dass wir eine catch Klausel hinzufügen, da Java der Meinung ist es wird nie eine SocketException bei player.play() geworfen. Wie kann man das erzwingen?
 
Eine Möglichkeit wäre einfach Exception zu fangen, dann sollte die genannte auch gefangen werden.

Allerdings wenn der Kompiler meckert wenn du die Exception direkt abfangen willst, dann wird sie wohl auch nicht geworfen. Woran erkennst du denn dass sie geworfen wird? Ich tippe mal die wird bereits im play() gefangen und einfach geloggt.
 
Eine Möglichkeit wäre einfach Exception zu fangen, dann sollte die genannte auch gefangen werden.

Allerdings wenn der Kompiler meckert wenn du die Exception direkt abfangen willst, dann wird sie wohl auch nicht geworfen. Woran erkennst du denn dass sie geworfen wird? Ich tippe mal die wird bereits im play() gefangen und einfach geloggt.

Hmm ja das könnte sein. Son mist aber auch. Also ich seh den Stack-Trace. Jedenfalls steht da dann die Zeile von dem player.play().

Mit dem hier haben wir es auch schon versucht, aber die Exception wurde nicht abgefangen:
Java:
try {
  player.play();
} catch(Exception e) {
  if(e instanceof SocketException) {
    System.out.println("Exception erfolgreich abgefangen");
  }
}
 
es ist zwar so auch eine Lösung, aber du solltest dir schon sicher sein, ob, und wenn ja welche Exception geworfen wird. ein
Code:
Catch (Exception e)
ist eigentlich nur für unvorhergesehene Sachen gedacht!!
Wenn die SocketException aber schon in der Play-Methode verarbeitet wird, wirst du sie auch mit "Catch Exception" nicht bekommen!!
 
Zuletzt bearbeitet:
es ist zwar so auch eine Lösung, aber du solltest dir schon sicher sein, ob, und wenn ja welche Exception geworfen wird. ein
Code:
Catch (Exception e)
ist eigentlich nur für unvorhergesehene Sachen gedacht!!
Wenn die SocketException aber schon in der Play-Methode verarbeitet wird, wirst du sie auch mit "Catch Exception" nicht bekommen!!

Ja, wie gesagt ;-) .

Unsere Lösung ist nun, dass wir einen InputStream zwischen den SocketInputStream und dem Player setzen und da das ganze abfangen. Ist zwar nicht schön, aber geht nicht anders.
 
Zuletzt bearbeitet:
Wird denn Dein Programm auch beendet, wenn die Exception ausgegeben wird? Ansonsten würde es ja bedeuten, dass sie gefangen und eben derart verarbeitet wird, dass sie ausgegeben wird.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben