cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
Choose Language Hide Translation Bar
View Original Published Thread

Jump out of a function?

pmroz
Super User

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.

5 REPLIES 5
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
bswedlove
Level IV


Re: Jump out of a function?

I am getting an error when trying to exit a function with return().

I get the error when I make a button box 

bb = Button Box("SpecsAuto")

then attach a function

bb << Set Function( Return() )

then click the box.

 

Here is demo code to reproduce the error:

nw = New Window("Win1");
nw << Append(bb = Button Box("SpecsAuto"));
bb << Set Function(
	Print("A");
	Return();
	Print("B");
);
bb << Click();

 

bswedlove_0-1726781008643.png

 

hogi
Level XII


Re: Jump out of a function?

set function() also works if no function is provided - like in your script.

 

To use the magic of return(), you have to put it inside a function:

nw = New Window("Win1");
nw << Append(bb = Button Box("SpecsAuto"));
bb << Set function(Function({},
	Print("A");
	Return();
	Print("B");)
);
bb << Click();