trythen

    If a function does not throw, return the function return value; otherwise, return the return value of a second function.

    Usage

    var trythen = require( '@stdlib/utils/try-then' );
    

    trythen( x, y )

    If a function x does not throw, returns the return value of x; otherwise, returns the return value of a second function y.

    function x1() {
        return 1.0;
    }
    
    function x2() {
        throw new Error( 'beep' );
    }
    
    function y() {
        return -1.0;
    }
    
    var z = trythen( x1, y );
    // returns 1.0
    
    z = trythen( x2, y );
    // returns -1.0
    

    The function y is provided a single argument:

    • error: the error thrown by x
    var randu = require( '@stdlib/random/base/randu' );
    
    function x() {
        if ( randu() < 0.5 ) {
            throw new Error( 'beep' );
        }
        throw new TypeError( 'boop' );
    }
    
    function y( err ) {
        if ( err instanceof TypeError ) {
            return 'boops';
        }
        return 'beeps';
    }
    
    var z = trythen( x, y );
    // returns <string>
    

    Examples

    var randu = require( '@stdlib/random/base/randu' );
    var ceil = require( '@stdlib/math/base/special/ceil' );
    var repeatString = require( '@stdlib/string/repeat' );
    var trythen = require( '@stdlib/utils/try-then' );
    
    var z;
    var i;
    
    function x() {
        if ( randu() < 0.9 ) {
            throw new Error( 'BOOP' );
        }
        return repeatString( 'BOOP', ceil( randu()*3.0 ) );
    }
    
    function y() {
        return repeatString( 'beep', ceil( randu()*5.0 ) );
    }
    
    for ( i = 0; i < 100; i++ ) {
        z = trythen( x, y );
        console.log( z );
    }