我一直在阅读Head First Java 2E书,其中涵盖了Java 5,我遇到了一个我不理解的异常处理问题。在特殊处理章节中,本书给出了以下示例,作为使用try / catch块捕获MidiUnavailableException的正确方法。
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();
}
}
没有try / catch块,程序无法使用MidiUnavailableException进行编译。我希望通过上面的代码,我得到输出:
Bummer...
相反,我得到了
Sequencer initialized...
这只是Java 5和Java 8之间的区别还是我做错了什么?
答案 0 :(得分:3)
我会尽量保持简短。
如果存在异常,则尝试/ catch块处理异常。
但在某些情况下,您必须放置一个try / catch块才能使用可能引发异常的类。
所以在你的情况下,如果你把它拿出来,你的代码就不会编译,因为它要求try / catch块,这并不意味着总会有异常。
希望这有帮助。
答案 1 :(得分:1)
Sequencer类可能抛出异常。这就是你必须添加try catch块的原因。但它运行正常,因此不会抛出异常。
尝试删除您的设备,然后运行它。它可能会抛出异常。