You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					36 lines
				
				931 B
			
		
		
			
		
	
	
					36 lines
				
				931 B
			| 
											3 years ago
										 | 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; |