Javaが次のシナリオをどのように取るのか疑問に思っていました
public static void main(String[] args) throws IndexOutOfBoundsException, CoordinateException, MissionException, SQLException, ParserConfigurationException {
try {
doSomething();
} catch (Exception e) {
e.printStackTrace();
}
}
上記のコードでは、メイン関数がさまざまな例外をスローすることを宣言していますが、関数内では一般的な例外をキャッチしています。Javaがこれを内部的にどのように受け止めているのだろうか?つまり、IndexOutOfBounds 例外をスローすると、最後のブロックdoSomething()
で e.printStackTrace() が呼び出されるでしょうか?catch (Exception e) {...}
関数の throws 領域で宣言されていない例外がスローされた場合、try/catch がそれを処理することはわかっていますが、宣言で言及されている例外についてはどうでしょうか?