executecatcherrors
executecatcherrors
PROGRAM
,
PARAMETERS

The executecatcherrors statement is the same as the execute statement, except for the fact that if an error occurs while running, it can be trapped by an if error statement immediately following the executecatcherrors statement.

Parameters

This statement has two parameters:

program – is the text (source code) of the program you want to run.

parameters – is a list of parameters to be passed to the subroutine. This list is optional, you don’t have to pass any parameters if you don’t need to. See parameter( and setparameter for more information on accessing parameters within a subroutine.

Description

This statement is the same as the execute statement, but it allows the calling procedure to trap errors with the if error statement. Here is the basics of how this can be used.

    local Code
    Code = "  ... some ... code ... here "
    executecatcherrors Code
    if error
        message "Code runtime error:"+info("error")
    endif

Note: We no longer recommend using this statement, instead, use the try and catch statements, like this.

    local Code
    Code = "  ... some ... code ... here "
    try
        execute Code
    catch
        message "Code runtime error:"+info("error")
    endcatch

In fact, the way the executecatcherrors statement works is by simply adding try and catch statements to your code. The program

    executecatcherrors Code

is exactly equivalent to:

    execute "TRY "+Code+" CATCH RETURNERROR INFO("ERROR") ENDCATCH"

See Also

- call -- allows a procedure to call a separate procedure within the current database as a subroutine.
- call( -- allows a procedure to be called as a subroutine within a formula and return a result.
- calledby( -- returns true if this function is in code called by the specified database, the specified procedure, or both.
- callingdatabase( -- returns the name of the database that called this procedure as a subroutine, if any.
- callingprocedure( -- returns the name of the procedure that called this procedure as a subroutine, if any.
- callwithin -- allows a procedure to call a mini-procedure within a separate procedure within the current database as a subroutine.
- callwithin( -- allows a "mini-procedure" to be called as a subroutine within a formula and return a result.
- callwithindatabase( -- returns true if the current procedure was called by another procedure in the same database, false if it was called by a procedure in another database.
- execute -- allows a procedure to call a sequence of statements within the current procedure as a "mini-subroutine".
- execute( -- allows a formula to execute a sequence of statements and return a result.
- executeasap -- executes the specified code at the first possible opportunity, non-atomically.
- executelocal -- is the same as the execute statement, but it shares local variables with the procedure that called it.
- farcall -- allows a procedure to call a separate procedure within a different database as a subroutine.
- farcallwithin -- allows a procedure to call a mini-procedure within a separate procedure in a different database as a subroutine.
- getproceduretext( -- gets the contents (source code) of a procedure.
- info("parameters") -- returns the number of parameters passed to a subroutine.
- info("procedurestack") -- returns the contents of Panorama's procedure call stack.
- parameter( -- is used to transfer data between a main procedure and a subroutine.
- parameterentity( -- returns the entity (field or variable) associated with a subroutine parameter, if any.
- return -- ends a subroutine.
- returnerror -- passes an error back to the current subroutines calling procedure.
- setparameter -- is used to transfer data from a subroutine back to the main procedure that called it.
- shortcall -- allows a procedure to call a sequence of statements within the current procedure as a "mini-subroutine".

History

Version | Status | Notes
10.0 | Updated | Carried over from Panorama 6.0 but now now allows parameters to be passed to and from the subroutine using the param( function and setparameter statement. Also, it is now ok to use executecatcherrors recursively.