cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Submit your abstract to the call for content for Discovery Summit Americas by April 23. Selected abstracts will be presented at Discovery Summit, Oct. 21- 24.
Discovery is online this week, April 16 and 18. Join us for these exciting interactive sessions.
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