Skip to main content

tryerr

Laurence MorganAbout 1 min

tryerr

Handles errors inside a block of code

Description

tryerr forces a different execution behavior where a failed process at the end of a pipeline will cause the block to terminate regardless of any functions that might follow.

It's usage is similar to try blocks in other languages (eg Java) but a closer functional example would be set -e in Bash.

To maintain concurrency within the pipeline, tryerr will only check the last function in any given pipeline (ie series of functions joined via |, ->, or similar operators). If you need the entire pipeline checked then use trypipe.

Usage

tryerr { code-block } -> <stdout>

<stdin> -> tryerr { -> code-block } -> <stdout>

Examples

tryerr {
    out "Hello, World!" -> grep: "non-existent string"
    out "This command will be ignored"
}

Detail

A failure is determined by:

  • Any process that returns a non-zero exit number
  • Any process that returns more output via STDERR than it does via STDOUT

You can see which run mode your functions are executing under via the fid-list command.

See Also

  • Schedulers: Overview of the different schedulers (or 'run modes') in Murex
  • catch: Handles the exception code raised by try or trypipe
  • fid-list: Lists all running functions within the current Murex session
  • if: Conditional statement to execute different blocks of code depending on the result of the condition
  • runmode: Alter the scheduler's behaviour at higher scoping level
  • switch: Blocks of cascading conditionals
  • try: Handles non-zero exits inside a block of code
  • trypipe: Checks for non-zero exits of each function in a pipeline
  • trypipeerr: Checks state of each function in a pipeline and exits block on error
  • unsafe: Execute a block of code, always returning a zero exit number

This document was generated from builtins/core/structs/tryerr_doc.yamlopen in new window.

Last update:
Contributors: Laurence Morgan