cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Register for our Discovery Summit 2024 conference, Oct. 21-24, where you’ll learn, connect, and be inspired.
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.

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 XI

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();