omochimetaru
例にあげたような上流の関数の場合、仮に列挙されていたとしても、 結局のところログを出すかユーザにメッセージを出すか、ぐらいしかできることがなくて、 いくらかのパターンの場合にはリトライの選択肢がある、ぐらいになると思います。
上層のエラーをハンドリングする際に、下層のエラーの詳細に応じてハンドリングすることが誤りではないですか?それぞれの層に準じたセマンティクスがあるはずで、その層のセマンティクスではなく、下層のエラーに対してハンドリングをするのは、カプセル化された実装の中身が漏れ出しているのでは?