ReturnとThrowの使い分け

いままで意識はしていなかったけど、クライアントに何かしらの反応を期待する場合はretuenを、クライアントに反応を期待しないですっ飛ばす場合にthrowを使うという風に使い分けているっぽい。

なんで、この使い分けを前提にした場合はreturnとthrowのフローは違ってくるので、等価な実装とは言えなくなってる。

こうして考えるとThrowってオブジェクトの関係を一切無視してCallStackをたどっていくのでオブジェクト指向っぽくない機能だよなとか思ったり。