time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

attempt.js (931B)


      1 var apply = require('./_apply'),
      2     baseRest = require('./_baseRest'),
      3     isError = require('./isError');
      4 
      5 /**
      6  * Attempts to invoke `func`, returning either the result or the caught error
      7  * object. Any additional arguments are provided to `func` when it's invoked.
      8  *
      9  * @static
     10  * @memberOf _
     11  * @since 3.0.0
     12  * @category Util
     13  * @param {Function} func The function to attempt.
     14  * @param {...*} [args] The arguments to invoke `func` with.
     15  * @returns {*} Returns the `func` result or error object.
     16  * @example
     17  *
     18  * // Avoid throwing errors for invalid selectors.
     19  * var elements = _.attempt(function(selector) {
     20  *   return document.querySelectorAll(selector);
     21  * }, '>_>');
     22  *
     23  * if (_.isError(elements)) {
     24  *   elements = [];
     25  * }
     26  */
     27 var attempt = baseRest(function(func, args) {
     28   try {
     29     return apply(func, undefined, args);
     30   } catch (e) {
     31     return isError(e) ? e : new Error(e);
     32   }
     33 });
     34 
     35 module.exports = attempt;