0

私は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 ブロックが実行されます。

ここで何が起きてるの?

4

2 に答える 2

1

コンパイラ エラーが発生した場合は、メソッド MidiUnavailableException. 実行時に例外がスローされ、アクションが成功した場合、catchブロックには入りません。finallyブロックを持っている場合、それは入力されること 保証されています。

于 2016-10-13T22:27:37.540 に答える
0

MidiUnavailableException はチェック済み例外であるため、コードをコンパイルするには catch ブロックを含める必要があります。ただし、プログラムの実行時に例外が実際にスローされるという保証はありません。あなたの場合、スローされていないため、tryブロック内のコードは正常に実行され、エラーの出力は呼び出されません。

于 2016-10-13T22:29:23.313 に答える