# trythen > If a function does not throw, return the function return value; otherwise, return the return value of a second function.
## Usage ```javascript 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`. ```javascript 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` ```javascript 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 ```
## Examples ```javascript 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 ); } ```