0

サンプルコードは次のとおりです。-

import javax.sound.midi.*;
import java.io.*;

class test{

public void go() throws MidiUnavailableException{
//try{
Sequencer sequencer = MidiSystem.getSequencer();
System.out.println("Got it");
//}

/*catch(Exception ex){
System.out.println("Size Matters");
}*/

/*catch(MidiUnavailableException ex){
System.out.println("I am the incorrect exception");
}*/
}

public static void main(String [] args) throws MidiUnavailableException{
test obj = new test();
//try{
obj.go();
//}
/*catch(MidiUnavailableException mex){
System.out.println("Compiler should catch me");

}*/

}
}

コードのコンパイル中に何も取得しません。これは、JVMがこの場合の例外を処理することを意味しますか?または、システムがシーケンサーを提供できない場合、プログラムは終了しますか?

4

3 に答える 3

2

mainメソッドが例外をスローすると、実行が停止し、スタックトレースがstdoutに出力され、JVMがシャットダウンします。

これについては何も奇妙なことはありません。例外をスローするようにメインを宣言することは許容されます。例外をキャッチするものがないというだけなので、JVMが実行できるのは爆発だけです。

于 2012-11-06T12:17:16.040 に答える
2

main()また、throws MidiUnavailableExceptionあなたは元気です。このような例外がスローさgo()れると、バブルが発生してJVMが停止します。

于 2012-11-06T12:17:23.893 に答える
2

はい。未処理の例外はスレッドを強制終了します。デーモン以外のすべてのスレッドが終了すると、プログラムは終了します。最後のスレッドが例外で終了した場合、終了ステータスはゼロ以外です。また、プログラムにはスレッドが1つしかありません。

于 2012-11-06T12:18:58.923 に答える