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.
		
		
		
		
		
			
		
			
				
					
					
						
							35 lines
						
					
					
						
							931 B
						
					
					
				
			
		
		
	
	
							35 lines
						
					
					
						
							931 B
						
					
					
				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;
 | 
						|
 |