try-catch 无法正常工作
try-catch not working properly
我正在阅读 Java 来自 HeadFirst 的文章。我开始阅读有关异常处理的章节。书中有我在电脑上执行的代码
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 块。
这里发生了什么?
当您遇到编译器错误时,这意味着方法 可能 抛出一个 MidiUnavailableException
。在运行时是抛出异常的时候,如果操作成功则不会进入 catch
块。如果您有一个 finally
块,那么 是 保证 被输入。
MidiUnavailableException 是一个已检查的异常,因此您需要包含 catch 块才能编译代码。但是,无法保证在您的程序执行时确实会抛出异常。在你的情况下,它没有被抛出,所以你的 try
块中的代码正常执行并且你的错误打印输出永远不会被调用。
我正在阅读 Java 来自 HeadFirst 的文章。我开始阅读有关异常处理的章节。书中有我在电脑上执行的代码
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 块。
这里发生了什么?
当您遇到编译器错误时,这意味着方法 可能 抛出一个 MidiUnavailableException
。在运行时是抛出异常的时候,如果操作成功则不会进入 catch
块。如果您有一个 finally
块,那么 是 保证 被输入。
MidiUnavailableException 是一个已检查的异常,因此您需要包含 catch 块才能编译代码。但是,无法保证在您的程序执行时确实会抛出异常。在你的情况下,它没有被抛出,所以你的 try
块中的代码正常执行并且你的错误打印输出永远不会被调用。