>>946
>エラー種別ごとに型を沢山作らなければならない点は解決しない

例外の場合は処理を分岐したい場合は一般的には型を分けるけど
戻り値の場合はswitch caseとかで分岐できる元ネタがあればいいので
ある程度汎用的な型にしてもそれほど困らないよ
(コンパイル時に分岐の網羅性をチェックできる言語だと安全性も高め)

httpのresponseをresponse code別に違う型で受け取って型で分岐したいのか
response codeの値で分岐したいのかって違い

例外を使う場合でも処理分岐が必要ないエラーを
なんでもかんでも型で表現しようとすると無駄な作業が増える