私は、ユーザー入力を受け取り、正常な出力値またはエラーを返す関数を持っている共通パターンを実行しています。しかし、さまざまなタイプのエラーを返すことができます。その中には、ユーザー入力の悪さや内部エラーの結果であるもの(DBが利用できないなど)があります。Golangのユーザーエラーと内部エラーを明確に区別するにはどうすればよいですか?
私の機能は次のようになり、署名があります。エラーが発生しなかった場合は、最初の戻り値は(nilでない)意味のある
// ProcessInput takes a user-input string and returns a processed value
func ProcessInput(input string) (ProcessedValue, error, error) {}
をユーザー入力が検証に失敗した場合、第2の戻り値がエラーです、予期しない内部エラーが発生した場合は3番目の戻り値はエラーとなります。
これはうまくいきますが、きれいに感じることはありません。さまざまなエラーが何であるかを署名から見ても分かりません。私はエラーを返す名前を考えたが、私はリターンパラメータの名前を付ける副作用が気に入らない。
クリーナーとして適用できるパターンは他にありますか? 1つのエラーが返され、呼び出し側でタイプ別に区別する必要がありますか?