データ取得で try...catch しない理由
DRANK

「データ取得で try...catch」とは、以下の様なものを指します。try { const data = await fetchSomething(); // 正常系レスポンスの処理 } catch (err) { if (isFetchError(err)) { // 異常系レスポンスの処理 } } 理由はつぎのとおりです。データ取得ライブラリ風に宣言的に書きたいからコーディングミス起因の例外も catch してしまうからHttpError は開発者にとって想定範囲内だからHttpError の集計に不便だから データ取得ライブラリ風に宣言的に書きたいから要約すると、データ取得時は常にこの様に書きたい、という話です。useSWR・useQuery や apollo/client でお馴染みのインターフェイスです。const { data, err, status } = await fetchSomething(); if (data) // 正常系レスポンスの処理 if (err) // 異常系レスポンスの処理 レスポンスを型定義で表すと、この様なものになります。type Res<T, K> = { data?: T; err?: K; status: number; }; コーディングミス起因の例外も catch してしまうからeslint の no-unused-expressions で以下のミスはすぐに気付きますが、any に握りつぶされている中間コードがもしあれば、catch 行きになる可能…

zenn.dev
Related Topics:
1 comments