【JavaScript】Errorタイプのオブジェクトかどうかを判定する

Code

はじまり

リサちゃん
リサちゃん

ぐぐぐ・・・! Errorってどうやって判別するんだ・・・?

135ml
135ml

お、JavaScriptか。Error判定する方法、知りたい?

リサちゃん
リサちゃん

知りたい知りたい! ヨロシク!

今回のソース

最終的にできたソースはこちらになります。

/**
 * @param {Error} error
 * @return {boolean}
 */
function isErrorType(error){
  const objectTypeInfo = Object.prototype.toString.call(error);
  if(objectTypeInfo.indexOf("Error") === -1){
    return false;
  }
  return true;
}

Object.prototype.toString.call(error)を呼び出したときの返り値は、Errorオブジェクトだった場合、以下のように出力されます。

console.log(Object.prototype.toString.call(error));

// [object Error]

そして、Object.prototype.toString.call(error).indexOf("Error")で、文字列の中に「Error」があれば、渡したオブジェクトはErrorタイプとなるわけです。

例えば、TypeErrorオブジェクトを渡すとtrueになります。

/**
 * @param {Error} error
 * @return {boolean}
 */
function isErrorType(error){
  const objectTypeInfo = Object.prototype.toString.call(error);
  if(objectTypeInfo.indexOf("Error") === -1){
    return false;
  }
  return true;
}

try{
  throw new TypeError("testtesttest");
}catch(error){
  const actual = isErrorType(error);
  console.log(actual);
}

// true

単にTypeErrorと書いて渡しても、Errorオブジェクトにならないので、テストコードなどを書く時はその点を留意しましょう。

/**
 * @param {Error} error
 * @return {boolean}
 */
function isErrorType(error){
  const objectTypeInfo = Object.prototype.toString.call(error);
  if(objectTypeInfo.indexOf("Error") === -1){
    return false;
  }
  return true;
}

const actual = isErrorType(TypeError);
console.log(actual);

// false

おしまい

リサちゃん
リサちゃん

これでErrorかどうかを判定できるね〜

以上になります!

コメント

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