Ich habe das Head First Java 2E Buch durchgegangen, das Java 5 behandelt, und ich stoße auf ein Problem mit der Ausnahmebehandlung, die ich nicht verstehe . Im Kapitel über die Ausnahmebehandlung gibt das Buch das folgende Beispiel als den richtigen Weg an, einen try/catch-Block zu verwenden, um eine MidiUnavailableException abzufangen.Java try/catch Block, der Text nicht ausgibt, wenn Ausnahme gefangen wird
import javax.sound.midi.*;
public class MusicTest {
public void play() {
try {
Sequencer sequencer = MidiSystem.getSequencer();
System.out.println("Sequencer initialized...");
} catch (MidiUnavailableException ex) {
System.out.println("Bummer...");
}
}
public static void main(String[] args) {
MusicTest mt = new MusicTest();
mt.play();
}
}
Ohne den try/catch-Block kann das Programm nicht mit einer MidiUnavailableException kompiliert werden. Ich würde erwarten, dass mit dem Code oben, ich würde die Ausgabe erhalten:
Bummer...
stattdessen bekomme ich
Sequencer initialized...
Ist dies nur ein Unterschied zwischen Java 5 und Java 8 oder ich tue etwas falsch ?
Warum würden Sie das erwarten? Warum erwarten Sie, dass Ihr Programm Ausnahmen auslöst? – Tunaki
Wenn Sie "Sequencer initialized ..." erhalten, bedeutet dies, dass keine Ausnahme ausgelöst wird ... die Zeile System.out.println ("Sequencer initialized ..."); wird ausgeführt. –
Das verstehe ich, aber wenn ich den try-Block raus nehme, bekomme ich eine Ausnahme. Vielleicht verstehe ich nicht vollständig, wie Ausnahmen funktionieren, aber warum hat ein try/catch-Block Auswirkungen darauf, ob eine Ausnahme ausgelöst wird? Sollte es nicht einen fangen, wenn es geworfen wird? – Argyle