【初心者】Java質問・相談スレッド112【大歓迎】 at TECH
[2ch|▼Menu]
264:195
08/02/15 01:47:42
>>205

激しく遅レスでごめんなさい。

言葉足らずだった、というか話が長くなる予定だったので最初は簡単に意向と思ったというか。

Java(というかJVM?)でも、普通にメソッドを呼び出すと引数とかリターンアドレスとか
ローカル変数とかをスタックに積んでいくんだと思うんですよ。

でも呼び出し先で「例外」投げると呼んだメソッドへのリターンではなくって、
メソッド呼び出しを含むtry節に対応したcatchのところに(しかも例外の種類にあったcatchのところ)へ
一足飛びに戻ってくるわけですね。

そしてそこでキャッチした例外のインスタンスには、
そこから上のスタックがごそっと詰まっているように見えるわけです。

そんなこんなで、tryを実行するとJVMがどっかにcatchのアドレスと例外の型を保存していて、
呼び出し先のどこかで「例外を投げる」を行うと、スタックをこれまたどこかに保存したうえで、
もともと保存してあったcatchのアドレスにまで一足飛びにジャンプして、というのを考えると、
それというのはGotoなんかよりよっぽどたち悪くないか、なんて思ったりするんですけど、
それでも例外は使うな、なんて話は別に聞かないですし、そんなもんかとも思うんですが、
例外処理書くときにもやもやするのは確かなのです。

そういう例外処理機構がくわしくわかるようなWebとかないでしょうか。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4244日前に更新/275 KB
担当:undef