1. ホーム
  2. javascript

[解決済み] JavaScriptで特定のエラーを処理する(例外を考える)

2022-06-08 02:32:05

質問

どのようにエラーの種類を実装すれば、特定のエラーだけを捕らえ、他のエラーはそのままにできるのでしょうか?



これを達成する1つの方法は、プロトタイプの Error オブジェクトのプロトタイプを変更することです。

Error.prototype.sender = "";


function throwSpecificError()
{
    var e = new Error();

    e.sender = "specific";

    throw e;
}

特定のエラーをキャッチする。

try
{
    throwSpecificError();
}

catch (e)
{
    if (e.sender !== "specific") throw e;

    // handle specific error
}



皆さんは、何か代替案をお持ちですか?

どのように解決するのですか?

カスタムの例外を作成するには、例外を継承した Error オブジェクトを使用します。

function SpecificError () {

}

SpecificError.prototype = new Error();

// ...
try {
  throw new SpecificError;
} catch (e) {
  if (e instanceof SpecificError) {
   // specific error
  } else {
    throw e; // let others bubble up
  }
}

を継承しない、最小限のアプローチ。 Error を継承することなく、名前とメッセージのプロパティを持つ単純なオブジェクトを投げることができます。

function throwSpecificError() {
  throw {
    name: 'SpecificError',
    message: 'SpecificError occurred!'
  };
}


// ...
try {
  throwSpecificError();
} catch (e) {
  if (e.name == 'SpecificError') {
   // specific error
  } else {
    throw e; // let others bubble up
  }
}