【发布时间】:2016-10-14 06:29:23
【问题描述】:
我正在阅读 HeadFirst 的 Java。我开始阅读有关异常处理的章节。书中有我在电脑上执行的代码。
import javax.sound.midi.*;
class PlayMusic
{
public void play()
{
try{
Sequencer sq = MidiSystem.getSequencer();
System.out.println("We got a sequencer");
}
catch(MidiUnavailableException ex)
{
System.out.println("Bummer!");
ex.printStackTrace();
}
}
public static void main(String[] args)
{
PlayMusic pm = new PlayMusic();
pm.play();
}
}
当我删除 try-catch 块时,编译器会引发 MidiUnavailableException 错误。我使用 try-catch 来捕获该异常,但 System.out.println("Bummer"); 没有被执行。而是执行 try 块。
这里发生了什么?
【问题讨论】:
-
您应该继续阅读或阅读this tutorial。
catch块仅当当且当执行。提出了一个配件Exception。编译器确实抱怨,因为您根本没有捕获异常(编译器无法知道在执行时是否引发了Exception)。
标签: java try-catch javax.sound.midi