throwsの挙動を確認してみた
1.catch節を書いた場合
メソッドAにてCを呼び出し。
メソッドC内ではキャストを行っているが、キャストに失敗するため例外発生。
発生した例外はcatch節で捉えられる。
実行結果は以下のようになる。
図にするとこんなかんじ。
2.catch節を書かなかった場合
catch節を書かずtry-finallyのみ。
すると、、
methodA()では例外をキャッチしないため処理が中断され以下のような結果となる。
例外ハンドラが見つからない場合、Java実行システムはさらにメソッド呼び出し元(この場合はmainメソッド)へ、例外ハンドラを捜しに行きます。
最終的に例外ハンドラが見つからなかった場合はJavaのデフォルトの例外処理を実行します。
(http://www.javaroad.jp/java_exception3.htmより)
上記を踏まえて図にしてみるとこんなかんじ。