Svelte入門:SvelteKitでのエラー処理 -Vol.3-

スポンサーリンク
Svelte入門:SvelteKitでのエラー処理 -Vol.3- 用語解説
Svelte入門:SvelteKitでのエラー処理 -Vol.3-
この記事は約3分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、SvelteKitでのエラー処.理について解説しています。

スポンサーリンク

背景

SvelteKitでのエラー処理について調査する機会がありましたので、その時の内容を備忘として記事に残しました。

エラー処理

エラーはソフトウェア開発において避けられない事実です。SvelteKit は、エラーの発生場所、エラーの種類、受信したリクエストの性質に応じて、エラーを異なる方法で処理します。

Unexpected errors

予期しないエラーは、リクエストの処理中に発生するその他の例外のことです。これらは機密情報を含む可能性があるため、予期しないエラーメッセージやスタックトレースはユーザーに露出されません。

デフォルトでは、予期しないエラーはコンソール(または本番環境ではサーバーログ)に出力されます。一方、ユーザーに露出されるエラーは一般的な形式を持ちます:

{ "message": "Internal Error" }

予期しないエラーは handleError フックを通過します。ここで独自のエラーハンドリングを追加できます。例えば:

  • エラーをレポーティングサービスに送信する
  • カスタムエラーオブジェクトを返す(これが $page.error になります)

例えば:

/** @type {import('@sveltejs/kit').HandleServerError} */
export function handleError({ error, event }) {
  // エラーをレポーティングサービスに送信
  console.error(error);
  sendToErrorReportingService(error);

  // カスタムエラーオブジェクトを返す
  return {
    message: '予期しないエラーが発生しました。すみませんが、後でもう一度お試しください。',
    code: 'UNEXPECTED_ERROR',
    id: generateUniqueErrorId()
  };
}

このアプローチには以下のような利点があります:

  1. セキュリティ:機密情報をユーザーに露出させないことで、潜在的なセキュリティリスクを軽減します。
  2. デバッグ:開発者は完全なエラー情報にアクセスできるため、問題の診断と修正が容易になります。
  3. ユーザーエクスペリエンス:ユーザーには分かりやすいエラーメッセージを表示し、必要に応じてサポートに連絡する方法を提供できます。
  4. エラートラッキング:handleError フックを使用して、エラーを追跡・分析するシステムにエラーを送信できます。
  5. カスタマイズ可能性:アプリケーションの需要に応じて、エラーの処理方法をカスタマイズできます。

このように、SvelteKitは予期しないエラーを適切に処理し、開発者に柔軟性を提供しながら、ユーザーとアプリケーションの両方を保護します。

おわりに

今日は、 SvelteKitでのエラー処理について解説しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました