class method Try.these

View source on GitHub →

Try.these(function...) → ?
  • function (Function) – A function that may throw an exception.

Accepts an arbitrary number of functions and returns the result of the first one that doesn't throw an error.

This method is deprecated.

More information

Try.these provides a simple idiom for trying out blocks of code in sequence. Such a sequence of attempts usually represents a downgrading approach to obtaining a given feature.

In this example from Prototype's Ajax internals, we want to get an XMLHttpRequest object. Internet Explorer 6 and earlier, however, does not provide it as a vanilla JavaScript object, and will throw an error if we attempt a simple instantiation. Also, over time, its proprietary way evolved, changing COM interface names.

Try.these will try several ways in sequence, from the best (and, theoretically, most widespread) one to the oldest and rarest way, returning the result of the first successful function.

If none of the blocks succeeded, Try.these will return undefined, which will cause the Ajax.getTransport method in the example below to return false, provided as a fallback result value.

var Ajax = {
  getTransport: function() {
    return Try.these(
      function() { return new XMLHttpRequest() },
      function() { return new ActiveXObject('Msxml2.XMLHTTP') },
      function() { return new ActiveXObject('Microsoft.XMLHTTP') }
    ) || false;