【JavaScript】カスタムエラークラスとエラーログ管理

JavaScript

はじめに

システムエンジニアとして日々開発をしていると、「エラー処理がもっと整理されていれば」と感じる場面は少なくありません。前回のエラーハンドリングの記事から一歩進み、単純に try…catch でエラーを捕まえるだけでなく、発生したエラーが「入力ミス」なのか「ネットワーク障害」なのか「システム内部エラー」なのかを区別する仕組みがを作成できれば、エラーの原因調査もやりやすくなります。
今回は「カスタムエラークラスの作り方」についてログとして記載していきたいと思います。

他にも、体系的にJavaScriptを学びたい方には以下の教材がおすすめです:

👉1冊ですべて身につくJavaScript入門講座(Amason)
👉 スラスラわかるJavaScript(Amazon)

 

カスタムエラークラスとは

JavaScriptには標準で Error クラスが用意されていますが、これを拡張することで、エラーの種類を明確に区別できるカスタムエラーを作ることができます。

 

構文

  • extends Error :標準Errorを拡張
class クラス名 extends Error {
  constructor(message) {
    super(message);  // 親クラスErrorのコンストラクタ呼び出し
    this.name = "CustomError";  // エラー名を独自に設定
  }
}

 

例1:バリデーションエラーを定義

ユーザー入力が不正な場合に、エラーを発生させる例になります。

class ValidationError extends Error {
  constructor(message) {
    super(message);
    this.name = "ValidationError";
  }
}

function validateUsername(username) {
  if (!username) {
    throw new ValidationError("ユーザー名が入力されていません");
  }
  if (username.length < 3) {
    throw new ValidationError("ユーザー名は3文字以上必要です");
  }
  return true;
}

try {
  validateUsername("test");  // エラーを発生させる
} catch (error) {
  console.error(`${error.name}: ${error.message}`);
}

 

例2:NetworkError(通信障害用)

class NetworkError extends Error {
  constructor(message, statusCode) {
    super(message);
    this.name = "NetworkError";
    this.statusCode = statusCode;
  }
}

async function fetchData(url) {
  const response = await fetch(url);
  if (!response.ok) {
    throw new NetworkError("API通信に失敗しました", response.status);
  }
  return await response.json();
}

 

エラーログ管理の重要性

カスタムエラーを定義しただけでは不十分で、ログとして残すこと が重要です。「発生時刻」「種類」「スタックトレース」まで詳細なログを残すことでエラーが発生した際に迅速にエラー箇所の特定が可能となります。

console.error(`[${new Date().toISOString()}] ${error.name}: ${error.message}`);

 

まとめ

今回取り上げたカスタムエラークラスを使えば、ただ「エラーが出た」という曖昧な扱いではなく、「何が原因で、どの種類のエラーなのか」 を明確に分類できます。そしてエラーログ管理を組み合わせることで、運用フェーズにおいても障害の切り分けや改善がスムーズになります。
また、ユーザーにはシンプルで安心感のあるメッセージを返しつつ、内部では詳細なログを残す。この二重の仕組みがあることで、ユーザー体験を損なわず、開発・運用側も安心して対応できるシステム設計が実現可能です。
日々の開発で適切にエラー処理を行い、ログも残していきましょう。

 

最後に

JavaScriptの環境構築は、この記事を参照してみてください。
【JavaScript】VSCodeでJavaScriptを使用するための環境構築を実施する – SEもりのLog JavaScript

以上、ログになります。
これからも継続していきましょう!!

JavaScriptフロントサイド関連
シェアする
おすすめIT本
良いコード/悪いコードで学ぶ設計入門

「ITエンジニア本大賞2023」技術書部門で大賞を受賞した本です。
・コードの可読性
・普段意識したほうが良いこと
・リファクタリング考え方
等、普段のコードを設計する際に意識することが書かれています。
コードのあるべき姿に迷ったら一度読んでみると良い本です。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Dockerって何?となったときに私が最初に読んだ本です。
Dockerがどんな仕組みで動いているのか、コマンドでは何を命令しているのかを理解できるように、イラストを多用して説明しています。

1冊ですべて身につくJavaScript入門講座

「ITエンジニア本大賞2024」技術書部門で大賞を受賞した本です。
私が次に読もうと思っている本なのでおすすめとして挙げておきたいと思います。

コメント

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