isError.js 955 B

123456789101112131415161718192021222324252627282930313233343536
  1. var isObjectLike = require('../internal/isObjectLike');
  2. /** `Object#toString` result references. */
  3. var errorTag = '[object Error]';
  4. /** Used for native method references. */
  5. var objectProto = Object.prototype;
  6. /**
  7. * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
  8. * of values.
  9. */
  10. var objToString = objectProto.toString;
  11. /**
  12. * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
  13. * `SyntaxError`, `TypeError`, or `URIError` object.
  14. *
  15. * @static
  16. * @memberOf _
  17. * @category Lang
  18. * @param {*} value The value to check.
  19. * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
  20. * @example
  21. *
  22. * _.isError(new Error);
  23. * // => true
  24. *
  25. * _.isError(Error);
  26. * // => false
  27. */
  28. function isError(value) {
  29. return isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag;
  30. }
  31. module.exports = isError;