Error Handlingの実装
コンパイル時に実行できる箇所と、実行時にしか実行できない箇所をちゃんと区別しないとごっちゃになりそう
例外処理の手順
例外がthrowされたら、そのスコープがtryの中かどうかを確認する
tryの中でなかったら、今いるmethodの呼び出し元へ戻る
という作業を繰り返して、もっとも近いスコープにあるtry節を見つけ、そのままcatch節へジャンプする
この時に
排他制御の処理をするメソッドを抜ける必要がある場合は、
排他ロックの解除も同時にしないといけない
フェーズ
コンパイル時に実行できる箇所
throw
が try
ブロックの中にあるかどうかのチェック
もし try
の中なら catch
へジャンプ
そうじゃないなら呼び出し元へ戻る
実行時に実行できる箇所
thorw
されたmethodを抜けて呼び出し元へ戻る
実現方法

p.123も参考
例外の発生を検出して投げる方法
投げた例外をハンドラまで送り届けるもの(try..catch)

にかかれているのは
try..catch
のようなよくある手続き的な
例外機構の話だが、
やっぱりモダンな後者のほうが楽なんだろうか
参考