マメにlogger.errorを書いていたところ、「そのエラーはユーザ起因で起こる(HTTPでいうと400系統)からログするのではなくてユーザに表示するのが筋」というレビューをもらった。
最終的にエラーをどうしたいのか、という観点で整理すると、エラーに対する対処の仕方も変わってくる。
- ユーザのパーミッションが足りない、入力がおかしい
- 我々がログしてもどうしようもない。雑音が増えるだけなのであまりログする意味がない
- ユーザには知らせるべきで、ユーザは試行錯誤できるべき
- ユーザの与り知らない領域でおかしなことが起こっている
- 我々に原因があるので、我々がログする必要がある
- ユーザに知らせてもいいが、回復できるかは不明
この基準で考えると、例外を投げたりエラーを返したりするのも、ユーザの入力に問題はないが何か良からぬことが起こってどうしようもない時などは例外を投げるとか、ユーザに原因があるのでエラーとする、といった議論ができるようになる。
Further Reading
ErrorとDefectの話について言及されている。