cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
JMP is taking Discovery online, April 16 and 18. Register today and join us for interactive sessions featuring popular presentation topics, networking, and discussions with the experts.
Choose Language Hide Translation Bar
pmroz
Super User

Jump out of a function?

Is there a way to cleanly jump out of a function?  Something like the break() function in a for loop.  I've tried throw() but that stops the entire JSL script.

3 REPLIES 3
ms
Super User (Alumni) ms
Super User (Alumni)

Re: Jump out of a function?

I often enclose error prone expressions in Try() without Throw(). The placement of Try() – within the function or "around" the function call – depends if I only want to escape parts of the function or escape it completely in case of an exception. Throw() halts execution and I tend to use it mainly for debugging.

Compare these examples and their output:

//Try() inside the function escapes chosen parts of function, script execution continues.

exsqr = Function( {x},

  x2 = Try( x * x, "Error, move on!" );

  Show( "Show this even if x is NaN" );

  x2;

);

sq = exsqr( "q" );

Show( sq, "function escape failed, but script continued" );

//Try() enclosing the function call escapes function, script execution continues.

exsqr = Function( {x},

  x2 = x * x;

  Show( "Don't show this if x is NaN" );

  x2;

);

sq = Try( exsqr( "q" ) );

Show( sq, "function escape succeeded!" );

//Try() with Throw() escapes function and script.

exsqr = Function( {x},

  x2 = Try( x * x, Throw( "Error, stop here!: " || Char( exception_msg ) ) );

  Show( "Don't show this if x is NaN" );

);

sq = exsqr( "q" );

Show( sq, "script stopped!" );

andrewtkarl
Level IV

Re: Jump out of a function?

Could you use return()?

txnelson
Super User

Re: Jump out of a function?

Yes, return() will break out of a function
Jim