これ結構いい気がする…!
finallyで後処理だけして、発生した例外を握り潰さず呼び出し元に投げる時に便利。
何もすごい事はしていないけど、割りと見やすくてなんとなくtry-catch-finallyっぽい。
見様によっては再throwを書く場所が違うだけに見えなくもない。
まぁtry内でreturnとかしてもfinallyブロックは実行されないけど。
早くPHPにもfinally実装されないかな。
<?php try { // 例外をスローする可能性のある処理 echo "try\n"; throw new Exception("err"); } catch (Exception $e) { // 例外処理 echo "catch\n"; } /* finally */ { // 最後に必ず実行される処理 echo "finally\n"; // 例外が発生していた場合は再throwする if (isset($e)) throw $e; }