Skip to content

エラーハンドリングの改善 #161

@nanasess

Description

@nanasess

現在、 #149 の内容でエラーハンドリングをしているが、クライアント側でエラーの内容を検知することができない。
例えば、 NotFoundException と ShoppingException の違いを検知できない。
結果として、それぞれ同じエラー画面が表示されてしまう。

エラーの内容ごとに、別々のエラー画面を表示させるため、エラーハンドリングを改善したい

案1) Category の 分類を増やす

現在、 Category 列挙型には以下が定義されている

  • Global
  • FormValidation

当初、画面全体に対するエラーか、フォームの各属性に対するエラーかを判断するために作成したが、エラーの種類を分類する用途へ変更する。
例えば、以下のように NotFound を増やすことによって、 Global と NotFound を別のエラー画面にすることができる

  • Global
  • FormValidation
  • NotFound

メリット

  • シンプルである

デメリット

  • プラグイン等での拡張が難しそう
  • 柔軟性に欠ける

案2) data の結果として error を返す

以下の記事にあるように、 union 型を利用して、 data の結果として error を返す。

例えば、 Product の Query の結果は以下のような Schema となる

union ProductResult = Product | NotFound

クライアント側では上記の結果に応じて、商品詳細画面を表示するか、NotFound エラー画面を表示するか制御することができる。

メリット

  • 柔軟に定義できる

デメリット

  • 柔軟であるがゆえ、大規模になると煩雑になりそう
  • 実装が複雑になりそう

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions