Version 1
[yaffs-website] / node_modules / grunt-legacy-util / node_modules / lodash / attempt.js
diff --git a/node_modules/grunt-legacy-util/node_modules/lodash/attempt.js b/node_modules/grunt-legacy-util/node_modules/lodash/attempt.js
new file mode 100644 (file)
index 0000000..322bf2f
--- /dev/null
@@ -0,0 +1,33 @@
+var apply = require('./_apply'),
+    isObject = require('./isObject'),
+    rest = require('./rest');
+
+/**
+ * Attempts to invoke `func`, returning either the result or the caught error
+ * object. Any additional arguments are provided to `func` when it's invoked.
+ *
+ * @static
+ * @memberOf _
+ * @category Util
+ * @param {Function} func The function to attempt.
+ * @returns {*} Returns the `func` result or error object.
+ * @example
+ *
+ * // Avoid throwing errors for invalid selectors.
+ * var elements = _.attempt(function(selector) {
+ *   return document.querySelectorAll(selector);
+ * }, '>_>');
+ *
+ * if (_.isError(elements)) {
+ *   elements = [];
+ * }
+ */
+var attempt = rest(function(func, args) {
+  try {
+    return apply(func, undefined, args);
+  } catch (e) {
+    return isObject(e) ? e : new Error(e);
+  }
+});
+
+module.exports = attempt;