APoSD 10.6 Mask exceptions

mizue
·

10.6 Mask exceptions を読んだ。

ハンドルすべき例外を減らすもう一つの方法について。

例えば、TCPプロトコルの場合、パケットがさまざまな理由でドロップされることがあるが、その場合、再送し、結果的にはパケット送信は成功したことになる仕組みを持っているので、送った側はパケットがドロップされたことを意識する必要がない。

NFSの場合は、延々とリトライして処理が終わらなくなって、ユーザは手動でサーバを再起動したりするはめになるので、こういう場合は、マスクしたエラーを通知して処理を停止するべき。

リトライが有効な場合はエラーにせずリトライするし、リトライが有効でない場合は適切な例外にして処理を終わらせる。これによって、システムは複雑さを軽減する。

例外のマスクが複雑さを軽減させる場合は確かにあると思うが、重大な事実もマスクされる危険性も含まれる気がするので、使い所の見極めは、開発者の経験なのかな。でも、適切につかっていけるようになろう。

@mizue
Healthy Programmer