Nodejsスローエラー

王林
リリース: 2023-05-28 13:43:09
オリジナル
952 人が閲覧しました

Node.js で開発する場合、例外をスローするために throw ステートメントをよく使用します。プログラムが throw ステートメントを実行すると、プログラムは実行を停止して例外をスローしますが、このとき、try...catch ブロックを使用して例外をキャッチして処理できます。

ただし、 throw を使用してエラーを報告すると、特殊な状況が発生することがあります。この記事では、これらの状況について詳しく説明し、対応する解決策を示します。

  1. 文字列型のエラー メッセージをスローする

throw を使用してエラーを報告する場合、通常は、次のような文字列の形式でエラー メッセージをスローします。

throw '未找到指定文件!';
ログイン後にコピー

ただし、場合によっては、例外をスローするときに、現在の時刻や実行ファイルへのパスなどの追加情報を追加する必要がある場合があります。この時点で、文字列テンプレートを使用して次のことを実現できます。

throw `文件 ${filePath} 于 ${new Date()} 未找到!`;
ログイン後にコピー

テンプレート文字列を使用すると、文字列を簡単に結合でき、エラー メッセージをより詳細で便利なものにすることができます。

  1. Error オブジェクト タイプのエラー情報をスローする

文字列タイプのエラー情報に加えて、Error オブジェクトを使用してエラーをスローすることもできます。これにより、エラー メッセージがより詳細になるほか、エラーをより適切に処理するために他のプロパティやメソッドを追加することもできます。

例:

throw new Error('未找到指定文件!', {
    code: 'ENOENT',
    path: '/usr/local/app'
});
ログイン後にコピー

この例では、文字列タイプのエラー メッセージとオブジェクト タイプのプロパティを含む Error オブジェクトをスローします。このオブジェクトには、エラー コードや実行ファイル パスなどの追加情報が含まれており、エラーをより適切に処理するのに役立ちます。

  1. カスタム エラー タイプをスローする

場合によっては、エラーをスローするためにカスタム エラー タイプを使用する必要がある場合があります。たとえば、API を開発する場合、クライアントがエラーをより適切に処理できるように、いくつかのインターフェイス エラー タイプを定義する必要がある場合があります。

Error クラスを継承することで、独自のエラー タイプを定義できます。

class APIError extends Error {
  constructor(message, code) {
    super(message);
    this.name = 'APIError';
    this.code = code;
  }
}
ログイン後にコピー

この例では、Error クラスから継承した APIError タイプを定義し、エラー メッセージとエラー コードを追加します。これを使用する場合、エラー

if (!user.hasPermission('ADMIN')) {
  throw new APIError('没有权限操作', 403);
}
ログイン後にコピー

をスローすることでカスタム エラー タイプをスローできます。このようにして、エラー メッセージをより明確にして管理しやすくすることができ、クライアントとの通信も向上させることができます。交流する。

概要

throw を使用してエラーを報告することは、Node.js では非常に一般的な操作です。実際の開発ではさまざまな状況に遭遇し、それに応じて対応する必要があります。この記事では、エラーの処理と管理を改善するために、文字列型をスローする方法、Error オブジェクト タイプをスローする方法、およびカスタム エラー タイプをスローする方法を紹介します。

以上がNodejsスローエラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート