エラーの階層化って深くなることはあまりないだろうし、ライブラリの中でWrapされることも少ないだろう。
Causeで取れるのもCauserを満たす最後(最古)のエラーだけなので、あまり深くWrapすると意図せずハマりそう。
errors.Wrapされた階層が深くなる場合、hashicorp/errwrapのWalk()のような機能があると良さそう。
深くなる前の早い段階で適切に処理するのが一番ではあるけど。
- effective goにはsentinel errorパターン
- 似たようなテーマの記事