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 块中的代码正常执行并且你的错误打印输出永远不会被调用。