Spaces:
Runtime error
Runtime error
var apply = require('./_apply'), | |
baseRest = require('./_baseRest'), | |
isError = require('./isError'); | |
/** | |
* 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 _ | |
* @since 3.0.0 | |
* @category Util | |
* @param {Function} func The function to attempt. | |
* @param {...*} [args] The arguments to invoke `func` with. | |
* @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 = baseRest(function(func, args) { | |
try { | |
return apply(func, undefined, args); | |
} catch (e) { | |
return isError(e) ? e : new Error(e); | |
} | |
}); | |
module.exports = attempt; | |