fujithuro / expensesBook

自分用の家計簿Webアプリケーションです。サーバーサイドはある程度仕上がっていますがフロントはまだまだ未完成です。
0 stars 0 forks source link

一覧検索の費目コードでIntの範囲を超える値を指定するとエラーメッセージが分かりにくい #15

Open fujithuro opened 2 months ago

fujithuro commented 2 months ago

現状と課題

一覧検索の費目指定で、Intの範囲を超える値(たとえば2147483648)を指定した場合、レスポンスのエラーメッセージで、問題点に気づきにくい。

エラーメッセージは下記の通りで、「Listを期待していたが''1,2147483648,8''だった」のようになっている。 正確に言えば「List<Int>を期待していたが〜」なのだが、ジェネリクスは残っていないのでこういうメッセージになっている。 Listではあるので、一見して問題に気づきにくい。

Argument type mismatch: Invalid value for parameter 'types'. Expected List, but got '1,2147483648,8'.

ちなみにレスポンスなどの生成を行っているのはMethodArgumentTypeMismatchExceptionの例外ハンドラー。

対応方針

大前提として、費目にIntの範囲を超える数値が設定されるケースはほとんど考えられないため、対応の優先度はかなり低い。

ただ、簡単に対応できるならどこかで対応したいので、忘れないようにIssueを残しておく。 ちなみにジェネリクスに@Max(Int.MAX_VALUE.toLong())を付与するのは試してみたが、機能してくれなかった。

返すメッセージを「費目コードがおかしい」などに変える方向性でもいいのだが、スローされている例外は型の不一致(MethodArgumentTypeMismatchException)なので、単純には対応できない。