現状
Service Worker内のエラーハンドリングが、包括的な try...catch に集約されています。
提案
ネットワークエラー、JSONのパースエラー、クオータ超過エラーなど、発生しうるエラーの種類に応じて、具体的なカスタムエラーを定義し、スローすることを提案します。
実装イメージ
// src/types/errors.ts
export class NetworkError extends Error { /* ... */ }
export class QuotaExceededError extends Error { /* ... */ }
export class InvalidStyleError extends Error { /* ... */ }
// src/cache-v1/service-worker.ts
// ...
if (!response.ok) {
throw new NetworkError(`Failed to fetch: ${response.status}`);
}
メリット
- エラーの原因が明確になり、デバッグが迅速化します。
- テストにおいて、特定のエラーが発生することを表明的に検証できます。
// quota.test.ts のようなテストで、エラーがスローされることを検証できる
await expect(() => client.add(largeResource)).rejects.toThrow(QuotaExceededError);
現状
Service Worker内のエラーハンドリングが、包括的な
try...catchに集約されています。提案
ネットワークエラー、JSONのパースエラー、クオータ超過エラーなど、発生しうるエラーの種類に応じて、具体的なカスタムエラーを定義し、スローすることを提案します。
実装イメージ
メリット