Skip to content

[1.0] エラーハンドリングの具体化 #18

@kochizufan

Description

@kochizufan

現状

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);

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